2015-12-02 72 views
1

我試圖做的是通知一個對象,當它被替換爲我的服務對象的委託時。我想知道如果有一種方式來創建willSet的默認implamintation所以我沒有重複的代碼爲每個服務對象的創建:是否有可能在類協議上創建willSet的默認實現

protocol BaseServiceDelegate: class { 
    var delegate: BaseServiceDelegate? {get set} 
    func servicesDelegateReferanceWasRemoved(service: BaseServiceDelegate) 
} 

extension BaseServiceDelegate { 

    willSet(newValue){ 
     delegate?.servicesDelegateReferanceWasRemoved(self) 
     self = newValue 
    } 
} 

我真的不知道從哪裏開始擴展的語法或者如果這是可能的。與上面的代碼錯誤是對「willSet」行:「Exspected宣言」 謝謝您的時間 仍然不知道它可能的,但我做了一些修改,以確保您可以訪問委託對象定義

+0

我認爲你可能爲了更好地理解協議及其擴展,請花一點時間在這個文檔上:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Protocols.html#//apple_ref/ doc/uid/TP40014097-CH25-ID267 – dudeman

+0

你是想讓一個[property observer]爲整個實例工作,還是隻是創建一個默認的函數來在屬性觀察器中執行? –

+0

因此,一個'BaseServiceDelegate'具有'BaseServiceDelegate'類型的'delegate'屬性? :) –

回答

0

最佳答案我能找到的是定義一個基本協議:

protocol baseProtocol { 
    func informOfAction() 
} 

然後實現這在您的與會代表,想也有這樣的功能:

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

,當你創建對象符合childProtocol具有自定義將設置有

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

不是很好,因爲我一直在尋找,但不是太糟糕,一個額外的3條線在我的所有對象類似於「代表」

相關問題