0

NSUrlConnection を複数回呼び出して Web から画像データをダウンロードする iOS アプリを作成しました。場合によっては、一方の NSUrlConnection が終了せずに他方が開始することがあります。破損した jpeg データが表示されます。これは、didReceiveData デリゲートが 2 つの個別の NSUrlConnections からデータを保存し、2 つの jpeg データ ストリームを 1 つのデータ変数にまとめて変更しているためだと思います。

私の質問は次のとおりです。これを回避する最善の方法は何ですか? 各 NSUrlConnection インスタンスを個別のデータ変数に保存する方法、または保存する前に前のインスタンスが完了するまで各インスタンスを待機させる方法はないようです。

私のコードは、NSURLRequest と NSURLConnection を作成する loadData 関数を複数回呼び出すことを除いて、基本的に Apple の例に従います。http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html

助けてくれてありがとう。

4

1 に答える 1

1

デリゲートの connection:didReceiveData: メソッドが呼び出されると、接続インスタンスが最初のパラメーターとして取得されます。したがって、それを使用して、データを受信したばかりの接続を追跡する必要があります。

Apple のサンプルは、NSMutableData の 1 つのインスタンスを維持します。コードには、アクティブな接続ごとに 1 つずつ、複数のインスタンスが必要です。

もちろん、接続ごとに個別のデリゲート オブジェクト (個別のインスタンス) を使用することもできます。その方が簡単かもしれません。

于 2010-12-05T06:57:58.997 に答える