0

画像と音声ファイルのアップロードとダウンロードのオプションがある単一のビューで、ダウンロードの進行状況を示すプログレスバー付きのダウンロードコードを正常に実装しました。

アップロードの進行状況の表示に問題があります。現在使用して[NSURLConnection sendAsynchronousRequest:いますが、アップロードの進行状況も表示したいのですが、このメソッドには、データの進行状況に関するコールバックブロックまたはデリゲート関数がありません。だから私は使用しようとしましconnection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:たが、このメソッドはどのようにトリガーされますか?

ダウンロードの場合、NSURLConnectionDataDelegateメソッドをトリガーして作業を完了するために、これを実行しています。

NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];

アップロードに使用する場合[NSURLConnection connectionWithRequest:someReq delegate:self]、1つのファイルにデリゲートを2回設定します。最初はアップロードメソッドが呼び出されたとき、2番目はダウンロードメソッドが呼び出されたときです。これは正しいアプローチですか?

最後に、どのよう[NSURLConnection sendAsynchronousRequest:に役立ちますか。データの進行状況に関するデリゲートやコールバックがありません。なぜそれを使用するのですか?

4

1 に答える 1

1

ダウンロードとアップロードは、アプリケーションの2つの異なる瞬間になる可能性があります。selfの開始を担当するオブジェクトを2回作成する場合は、デリゲートとして2回設定することは理にかなっていNSURLConnectionます。そうでない場合は、意味がありません。

完全なメソッドシグネチャはsendAsynchronousRequest:queue:completionHandler:、大きな違いを生むものです。この場合、応答はハンドラー(NSData*)で行われるため、デリゲートを設定する必要はありません。

于 2012-11-19T07:38:16.510 に答える