2016-04-26 10 views

答えて

3

をSwiftでは、Objective-Cと同じように型とプロトコルを組み合わせることはできませんが、プロトコルの組み合わせを指定することはできます。 AnyObjectは、実際にはプロトコルであり、あなたが書くことによって、あなたが上記の表現したいものを達成することができますので:

public struct Subscription { 
    private weak var subscriber:protocol<Subscriber, AnyObject>? = nil 
} 

これはSubscriberAnyObjectプロトコルの両方に準拠するようにsubscriberが必要です。あなたは本質的に任意の適合タイプもAnyObjectであることを保証Subscriberプロトコルclassプロトコルを作ったので、あなたの場合は

は、上記の、あなたが実際にAnyObject一部を必要としません。だから、あなただけ書くことができる:

public struct Subscription { 
    private weak var subscriber:Subscriber? = nil 
} 

しかしprotocol<Subscriber, AnyObject>アプローチをSubscriberを実装するクラスの種類に制限、特定subscriber弱いVARをしながら、あなたの加入者プロトコルは、唯一のクラスの種類に限定されるものではないことができるでしょう。

2

プロトコルに準拠したオブジェクトを参照するには、プロトコルを使用します。スウィフトはあなたがid<SomeProtocol>を指定する必要がObjective-Cのようにされていません。

public struct Subscription { 
    private weak var subscriber: Subscriber? = nil 
} 

あなたはむしろclassを使用するよりも、AnyObjectに使用を制限したい場合も、このようなあなたのプロトコルを宣言することができます。

public protocol Subscriber : AnyObject { 
    // ... 
} 
関連する問題