これは少し奇妙です。のドキュメントは次のようにNSURLConnectionDelegate
述べています。
NSURLConnectionDelegateプロトコルは、NSURLConnectionオブジェクトのデリゲートによって実装されるオプションのメソッドを定義します。
オプションの有効な単語があります。
ただし、NSURLConnection
クラスリファレンスには次のように書かれています。
NSURLConnectionのデリゲートメソッド(NSURLConnectionDelegateプロトコルで定義)を使用すると、オブジェクトはURL要求の非同期ロードに関する情報コールバックを受信できます。他のデリゲートメソッドは、デリゲートが非同期URLロードを実行するプロセスをカスタマイズできるようにする機能を提供します。これらのデリゲートメソッドは、関連付けられたNSURLConnectionオブジェクトの非同期ロード操作を開始したスレッドで呼び出されます。
これら2つは矛盾しているようです。
最後に、「URLローディングシステムプログラミングガイド」には次のように書かれています。
URLのコンテンツをダウンロードするには、アプリケーションは、少なくとも次のデリゲートメソッドを実装するデリゲートオブジェクトを提供する必要があります:connection:didReceiveResponse:、connection:didReceiveData:、connection:didFailWithError:、connectionDidFinishLoading:。
NSURLConnection
これらのデリゲートメソッドがないとほとんど役に立たないので、これはあなたが期待することです。
ヘッダーファイルを見ると、必要なデリゲートメソッドをリストしてNSURLConnection
いるプロトコルがあるようです。NSURLConnectionDataDelegate
ただし、@optional
ヘッダーにあるようにマークされています。それの定義によると、NSURLConnectionDataDelegate
実装する必要がありますNSURLConnectionDelegate
。
プロトコルを実装するためにデリゲートクラスを宣言すると、 NSURLConnectionDataDelegate
Xcodeはデリゲートメソッドをオートコンプリートします。
これはすべて私には少し厄介な感じがします。Cocoa / Cocoa Touch APIは通常、これよりもはるかに優れています。
私は確かに、Appleがこれらのデリゲートメソッドを使用するためにアプリを拒否する可能性があるとはNSURLConnection
思いません。