2017-07-19 12 views
0

とプロトコルで定義されたデリゲートを拡張します私は書くは、私は次のように別のプロトコルでプロトコルデリゲートを拡張する別のプロトコル

すべてがコンパイルされ、私は方法を呼び出すことができない以外はうまく動作します直接NetworkWriteablecallback。それがうまく動作しますが、キャストは良い方法ではありませんよりも

if let delegate = delegate as? NetworkWriteablecallback { 
... 
} 

を次のように私は、デリゲートをダウンキャストする場合、私は、知っています。

他の提案はありますか?

答えて

0

残念なことに、you can't "override"delegateの要件が宣言されていて、それが良いことであるとわからない場合は、

私はデリゲートを透過的にキャストするのに便利です。プロトコルの拡張では、このキャストはNetworkWriteableプロトコルの本来の動作になります。

extension NetworkWriteable { 
    var networkWriteableDelegate: NetworkWriteablecallback? { 
     set { 
      delegate = newValue 
     } 
     get { 
      return delegate as? NetworkWriteablecallback 
     } 
    } 
} 

final class DefaultNetworkWriteable: NetworkWriteable { 

    weak var delegate: WriteableCallback? 

    func myfunc() { 
     if self.networkWriteableDelegate === self.delegate { 
      // always true 
     } 
    } 
} 
関連する問題