純粋なSwiftで弱いプロトコル参照を作成する方法(@objcなし)質問する

純粋なSwiftで弱いプロトコル参照を作成する方法(@objcなし)質問する

weakprotocolが として宣言されていない限り、Swift では参照が機能しないようですが@objc、これは純粋な Swift アプリでは望ましくありません。

このコードはコンパイル エラーになります (weak非クラス型には適用できませんMyClassDelegate)。

class MyClass {
  weak var delegate: MyClassDelegate?
}

protocol MyClassDelegate {
}

プロトコルの前に を付ける@objcと動作します。

質問: を達成するための「純粋な」Swift の方法は何ですかweak delegate?

ベストアンサー1

プロトコルのタイプを として宣言する必要がありますAnyObject

protocol ProtocolNameDelegate: AnyObject {
    // Protocol stuff goes here
}

class SomeClass {
    weak var delegate: ProtocolNameDelegate?
}

を使用するとAnyObject、クラスのみがこのプロトコルに準拠でき、構造体や列挙型は準拠できないと述べます。

おすすめ記事