【发布时间】:2015-11-23 03:48:32
【问题描述】:
考虑以下几点:
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是否可以做到这一点?
换句话说,我可以观察协议扩展内的属性变化吗?
【问题讨论】:
-
请注意,您确实可以很容易地做到这一点,如果您使用关联的属性。这是我最近发表的关于如何创建关联属性的帖子:example 在撰写本文时这很新鲜,所以希望它相当稳定。
-
关于这个问题,一个完美的例子,你可以在哪里使用这个是这个QA中使用的例子:stackoverflow.com/questions/41910120/…
-
@Fattie 你能修复那个链接吗?我目前无法查看您的帖子或示例。
-
啊,你的意思是第一个链接!请注意,SO 关闭了“文档”功能。不幸的是,这个例子永远消失了。对不起!
标签: swift swift2 protocol-extension