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 definition" お時間をいただきありがとうございます。まだ可能かどうかはわかりませんが、定義されたデリゲート オブジェクトに確実にアクセスできるようにいくつかの編集を行いました。

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 に答える