0

NSURLConnectionDataDelegate には、すべてが機能していることを確認するために非常に重要な関数がいくつかありますが、いつ何が起こるかはわかりません。

機能は...

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;
- (void)connectionDidFinishLoading:(NSURLConnection *)connection;

と他のカップル。

それらは常に私が置いた順序で発生しますか? つまり、応答が最初に得られるものですか、それとも接続の存続期間中にいつでも発生する可能性がありますか?

4

2 に答える 2

4

-connection:didReceiveResponse:0回以上呼び出されます。エラーが発生した場合は、-connection:didFailWithError:代わりに が呼び出されます。マルチパート MIME メッセージを取得している場合、このメソッドは複数回呼び出される可能性があり、応答オブジェクトを作成するのに十分な日付があり、 が呼び出される前-connection:didReceiveData:に呼び出されます。

-connection:didReceiveData:0回以上呼び出されます。本体が 0 バイトを超える場合、このメソッドは が呼び出される前に少なくとも 1 回-connection:didFinishLoading:呼び出されます。このメソッドは、 or の前または後に呼び出されることはありませ-connection:didReceiveResponse:ん。-connection:didFinishLoading:-connection:didFailWithError:

-connection:didFinishLoading:一度だけ呼び出され、最後に呼び出されます。このメソッドが戻った後、接続が解放されます。このメソッドは、 が呼び出された場合-connection:didFailWithError:には呼び出されず、常に最後に呼び出されます。

これらのメソッドがいつ呼び出され、どの順序で呼び出されるかに関するドキュメントはヘッダー ファイルに存在しますが、実際のドキュメントで非常に簡潔に書かれているのを見たことがありません。

于 2013-07-10T07:25:15.717 に答える
2

デリゲート メソッドについては、どの順序で配置してもかまいません。それらは、特定のイベントが満たされたときに発生します。

2番目のことは、文書NSURLConnectionDataDelegate Protocol Referenceによると:

didReceiveResponse : このメソッドは、NSURLResponse を作成するのに十分な情報があるとサーバーが判断したときに呼び出されます。たとえばリダイレクトの場合など、複数回呼び出すことができるため、そのたびにデータをリセットします。

didReceiveData : このメソッドは、接続から新しく利用可能なデータがある場合に呼び出されます。このメソッドは複数回呼び出されます

connectionDidFinishLoading : 接続のロードが正常に終了したときに送信されます。このメソッドは、リダイレクトの場合にも複数回呼び出されます。

于 2013-07-10T07:22:06.183 に答える