プロトコルを実装する UIView の拡張機能があります
protocol SomeProtocol {
var property : Int
}
extension UIView : SomeProtocol {
var property : Int {
get {
return 0
}
set {
// do nothing
}
}
}
具体的なサブクラスで、この拡張メソッドをオーバーライドしたい:
class Subclass : UIView, SomeProtocol {
var _property : Int = 1
var property : Int {
get { return _property}
set(val) {_property = val}
}
}
ブレークポイントを設定すると、具体的なサブクラス メソッドではなく、拡張メソッドが呼び出されることがわかります。
var subclassObject = Subclass()
someObject.doSomethingWithConcreteSubclassObject(subclassObject)
// other code;
fun doSomethingWithConcreteSuclassObject(object : UIView) {
var value = object.property // always goes to extension class get/set
}