は、次のことを考えてみましょう:プロトコル拡張のSwiftプロパティオブザーバ?
protocol ViewControllable: class {
typealias VM: ViewModellable
var vm: VM! { get }
func bind()
}
extension ViewControllable {
var vm: VM! {
didSet {
bind()
}
}
}
私はvm
財産を観察し、それが注入されるたびにbind
を呼び出すようにしようとしています。
拡張プロトコルが
stored
またはcomputed
する性質を強制することはできませんので、理にかなって格納されたプロパティ
が含まれていない場合があります。しかし、これはというエラーでコンパイルされません。
class inheritance
を導入せずにこれを達成できますか?
つまり、プロトコル拡張の中でプロパティの変更を観察できますか?
関連付けられたプロパティ*を使用する場合は、実際にこれを非常に簡単に行うことができます。最近の記事は、関連するプロパティを作成する方法を正確に示しています。[例](http://stackoverflow.com/documentation/swift/1085/associated-objects/27656/property-in-a-protocol-extension-achieved -using-associated-object#t = 20170128181236289743)これは、これを書いているときにはとても新鮮です。うまくいけば、かなり安定しています。 – Fattie
この質問に関して、このQAで使用されている例は、これを使用できる完全な例です。http://stackoverflow.com/questions/41910120/in-swift3-combine-respondsto-and-calling-in-one-落ちたswoop – Fattie