2017-01-26 12 views
5

1つのみではなく複数の代理人を追加することは、非常に一般的な作業です。我々はAnyObjectプロトコルに準拠するObserverProtocolを強制しようとした場合、我々は別のエラーになりますNSHashTableを使用してSwiftでObserverパターンを実装する3

protocol ObserverProtocol 
{ 
    ... 
} 

class BroadcasterClass 
{ 
    // Error: Type 'ObserverProtocol' does not conform to protocol 'AnyObject' 
    private var _observers = NSHashTable<ObserverProtocol>.weakObjects() 
} 

::私たちは、プロトコルおよびクラスがあると仮定し

Using 'ObserverProtocol' as a concrete type conforming to protocol 'AnyObject' is not supported

は弱いデリゲートのセットを作成することも可能ですスウィフト3.0で?

答えて

6

もちろん、可能です。

AnyObjectはあなたのコードをコンパイルするために取得することを目的とC.でidのスウィフトと等価である、あなただけのプロトコルが目的C.

と互換性がなければならないことスウィフトを伝えるために、あなたのプロトコルに @objc注釈を追加する必要があります

So:

@objc protocol ObserverProtocol { 

} 
関連する問題