web-dev-qa-db-ja.com

Swiftでプロトコルを拡張する方法

Swiftでは、基本プロトコルを拡張または専門化するプロトコルをどのように定義しますか?ドキュメントはこれを明確にしていないようです。

SwiftプロトコルはNSObjectプロトコルに準拠/拡張していますか?Swiftはvtable-またはメッセージ-プロトコルメソッドを呼び出すためのディスパッチに基づく。

30
Jasper Blues

プロトコル継承は、Swiftの通常の継承構文を使用します。

protocol Base {
    func someFunc()
}

protocol Extended : Base {
    func anotherFunc()
}

Swiftプロトコルは、デフォルトではNSObjectProtocolに準拠していません。プロトコルをNSObjectProtocolに準拠させることを選択した場合、プロトコルはクラスでのみ使用されるように制限されます。

43
Connor

構文は、スーパークラスから継承したクラスを宣言する場合と同じです。

protocol SomeProtocol { }

protocol SomeOtherProtocol: SomeProtocol { }

そして、そうではありません。プロトコルをNSObjectProtocolにも準拠させる場合は、新しいプロトコルがこのように準拠するように複数のプロトコルを指定できます。

protocol SomeOtherProtocol: SomeProtocol, NSObjectProtocol { }
8
Mick MacCallum