0

次のように、.h ファイルでデリゲートを定義できることを知っています。

@property (nonatomic, weak) id <MyClassDelegate> delegate;

そして、この宣言も機能することがわかりました:

@property (nonatomic, weak) id delegate;

私は xcode 4.6 と最新の SDK を使用しています。私の質問は次のとおりです。コンパイラは .h ファイルで「MyClassDelegate」を自動的に検索しますか?

4

2 に答える 2

1

どちらの方法でもデリゲート インスタンス変数を定義できますが、最初の方法の方が適しています。

最初の方法では、コンパイラがプロトコルを見つけて (プロトコルが定義されている .h ファイルをインポートする必要があります)、次のことを確認します。

  1. デリゲートが設定されている場所では、設定されているインスタンスがプロトコルを実装します
  2. デリゲートを使用する場所では、既知のメソッドを呼び出しています

2 番目の方法では、コンパイラはチェックを行わず、すべてをランタイムに任せます。

プロトコルは、特定の名前のファイルで定義する必要はありません。プロトコルを使用しようとするファイルで定義するか、プロトコルが定義されているファイルを#import編集する必要があります。

于 2013-05-06T15:59:47.537 に答える
1

プロトコルを使用した正式な委任 (最初のバージョン) と、プロトコルを使用しない非公式の委任 (2 番目のバージョン) を作成できます。どちらも構文的に正しいです。

于 2013-05-06T16:01:30.703 に答える