2017-12-07 17 views
1

弱いプロパティのプロトコルを使用してViperコンポーネント間の接続を確立するためにViperアーキテクチャで使用されるプロトコルを定義したいと思います。現在はできませんSwiftプロトコルの弱いプロパティは、クラスまたはクラスにバインドされたプロトコルタイプのみです。

「弱い」は唯一のクラスとクラスが結合したプロトコルタイプに適用することができる、 ない「Self.ViperViewClass」

protocol ViperPresenter: class { 

    associatedtype ViperViewClass 
    weak var view: ViperViewClass! { get set } 

} 

答えて

6

プロトコル:私は、次のエラーメッセージが表示されますプロパティを実装する必要があるdはweakとして保存されます。

現在、プロパティの要件にはweakunownedのキーワードが使用できますが、効果はありません。以下は完全に合法です:

class C {} 

protocol P { 
    weak var c: C? { get set } 
} 

struct S : P { 
    var c: C? // strong reference to a C instance, not weak. 
} 

これはfiled as a bugだった、とSE-0186は(両方スウィフト3と4のモードで)プロトコルでスウィフト4.1に警告を特性要件にweakunownedを利用しますと、スウィフト5.

に誤りしかし、プロトコルはweakまたはunowned格納されたプロパティとして実装するプロパティを必要ができたとしても、コンパイラはViperViewClass
を言うことによって、すなわち、クラス型(であることを知っておく必要があります)。

関連する問題