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