2017-03-27 5 views
0

Swift3。私はちょうどUICollectionViewDelegateがどのように弱いプロパティとして宣言できるのだろうと思っています。スイフト。 UIKitのデリゲートパターンのプロトコル。 NSObjectProtocol

迅速な「ヘッダー」をチェックすると、から継承され、次にNSObjectProtocolから継承され、class-onlyプロトコルとしてマークされていないことがわかります。

weakデリゲートパターンとしてデリゲートパターンを使用するために私自身のプロトコルを作成しようとすると、コンパイル時エラー'weak' may only be applied to class and class-bound protocol typesが発生します。

私はコンパイラがclassを使用するように強制する理由を理解していますが、どのようにしてUICollectionViewDelegateがこの問題を解決できるか疑問に思っています。私はclassが構文的な砂糖のようなものだと思いますが、あなたが私を説明できるかどうかは分かります。

注:値型と参照型の両方で採用できるプロトコルが本当に必要な状況に対処するパターンがありますが、メモリの観点からも(簡単には)weakの参照で管理されているという状況があります。

少し不明な点がありましたら申し訳ありません。

答えて

2

定義でclassキーワードを使用すると、「このプロトコルはSwift構造体または列挙型ではなくクラスにのみ適用されます」と表示されます。

オブジェクトがObjective-Cクラスまたはプロトコルから継承するか、Objective-Cクラスまたはプロトコルである場合、その定義はSwift構造体または列挙型ではありません。したがって、指定する必要はありません。

関連する問題