1

我要做的是在对象被替换为我的服务对象的委托时通知它。我想知道是否有一种方法可以创建 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”谢谢你的时间仍然不确定它是否可能,但我做了一些编辑以确保你可以访问定义的委托对象

4

1 回答 1

0

我能找到的最佳答案是定义一个基本协议:

protocol baseProtocol {
    func informOfAction()
}

然后在您希望也具有此功能的代表上实现此功能:

protocol childProtocol: baseProtocol {
    func somethingHappend()
    func somethingElseHappend()
}

并且当您创建符合 childProtocol 的对象时,将在此处设置自定义

var delegate: childProtocol? {
    willSet{
        delegate?.informOfAction()
    }
}

没有我想要的那么好,但还不错,在我的所有对象上都增加了 3 行,类似于“代表”

于 2015-12-02T22:32:57.553 回答