Рассмотрим следующее:
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?
Другими словами, Могу ли я наблюдать изменение свойства внутри расширения протокола?