【发布时间】:2015-12-02 19:37:34
【问题描述】:
我要做的是在对象被替换为我的服务对象的委托时通知它。我想知道是否有办法创建 willSet 的默认植入,这样我就不必为我创建的每个服务对象复制代码:
protocol BaseServiceDelegate: class {
var delegate: BaseServiceDelegate? {get set}
func servicesDelegateReferanceWasRemoved(service: BaseServiceDelegate)
}
extension BaseServiceDelegate {
willSet(newValue){
delegate?.servicesDelegateReferanceWasRemoved(self)
self = newValue
}
}
我真的不知道从哪里开始扩展的语法或者这是否可能。上述代码的错误出现在“willSet”行:“预期声明” 感谢您的时间 仍然不确定它是否可能,但我进行了一些编辑以确保您可以访问定义的委托对象
【问题讨论】:
-
我认为您可能希望在此文档上多花一点时间以更好地理解协议及其扩展:developer.apple.com/library/prerelease/ios/documentation/Swift/…
-
您是想让 [property observer] 为整个实例工作,还是只是创建一个默认函数以在属性观察器内执行?
-
所以
BaseServiceDelegate有一个delegate类型为BaseServiceDelegate的属性? :) -
不可能,因为 self 是不可变的。
-
嘿,不可变不是问题,因为这被定义为类协议,我的想法是,如果其他人可以将自己设置为您的代表,并且您在他们的参考被覆盖。这样做的正确方法可能是在基类而不是基协议中构建相同的功能
标签: ios swift protocols protocol-extension