ドキュメンテーションの内容にかかわらず、Cocoa の および の実際の定義を見るinitWithRequest
とconnectionWithRequest
、次のように定義されています。
- (id)initWithRequest:(NSURLRequest *)request delegate:(id)delegate;
+ (NSURLConnection*)connectionWithRequest:(NSURLRequest *)request delegate:(id)delegate;
ご覧のとおり、delegate
パラメーターはid
明示的で正式なプロトコルが指定されていないものとして定義されているため、渡したオブジェクトが特定のプロトコルに準拠していると定義されていなくても、警告は表示されません。 .
したがって、あなたの質問への回答として、この特定のケースでは、特定のプロトコルに準拠するようにデリゲートを定義する必要はありません。他の多くの場合、delegate
プロパティは適切なプロトコルに準拠するポインターを取るように定義されているため、オブジェクトが準拠していない場合、コンパイラーは警告を発します。しかし、この場合ではありません。
言うまでもなく、準拠しているプロトコルを定義する必要があります。これにより、コーディングがより明確になり、少なくとも、これらのいずれかを書き始めるときに Xcode でより優れたオートコンプリートを楽しむことができます。メソッド。しかし、あなたの質問は、すべきかどうか(すべきか) ではなく、すべきか (すべきでないか) でした。
明確にするために、iOS には 2 つのNSURLConnection
プロトコルがNSURLConnectionDataDelegate
あり、NSURLConnectionDelegate
. (これが、一部のメソッドをこのプロトコルに移行することとの混乱を避けるために、メソッド宣言でプロトコルを定義しない理由である可能性がありNSURLConnectionDataDelegate
ます。)