我要做的是在将对象替换为来自我的服务对象的委托时通知对象。我想知道是否有办法创建一个默认的willSet,所以我不必为我创建的每个服务对象重复代码:
protocol BaseServiceDelegate: class {
var delegate: BaseServiceDelegate? {get set}
func servicesDelegateReferanceWasRemoved(service: BaseServiceDelegate)
}
extension BaseServiceDelegate {
willSet(newValue){
delegate?.servicesDelegateReferanceWasRemoved(self)
self = newValue
}
}
我真的不知道从哪里开始扩展的语法或者这是否可行。上面代码的错误在'willSet'行:“Exspected declaration” 感谢您的时间 仍然不确定它是否可能,但我做了一些编辑,以确保您可以访问定义的委托对象
答案 0 :(得分:0)
我能找到的最佳答案是定义一个基本协议:
protocol baseProtocol {
func informOfAction()
}
然后在您希望也具有此功能的代理上实现此功能:
protocol childProtocol: baseProtocol {
func somethingHappend()
func somethingElseHappend()
}
当你创建符合childProtocol的对象时,自定义将设置在那里
var delegate: childProtocol? {
willSet{
delegate?.informOfAction()
}
}
不如我想要的那么好但不是太糟糕,我的所有物品上额外的3行类似于'委托'