0

ファイルを非同期にダウンロードするクラスを使用しています..このように少し動作します

// in AViewController.m
DataGetter *blueFile = [[DataGetter alloc] init];
blueFile.delegate = self;
[blueFile getData:@"http://example.com/blue-file"];

ダウンロードしたファイルに処理を行うデリゲートメソッドがあります

- (void) dataGetterFinished:(DataGetter *)dataGetter
{
// code
}

これは理想的な状況では問題なく機能しますが、モバイル デバイスを扱っているため、接続が常に信頼できるとは限りません。接続が途中で切れたり、使用できないほど遅くなる可能性があります。

だから、たとえば10秒後にトリガーされ、エラーを表示して操作を停止するデリゲートメソッドをどのように設定するのか疑問に思っています。NSTimer、または NSNotification 、またはいくつかの組み合わせを使用する必要がありますか?

4

1 に答える 1

1

クイン「エスキモー!」Apple の は、WWDC 2010 で iPhone のネットワーク プログラミングに関する 2 つの講演を行いました。セッション 207 と 208 です。こちらからダウンロードできます: http://developer.apple.com/videos/wwdc/2010/

ネットワークで成功するための簡単なレシピは次のとおりです。

  1. NSURLConnection非同期で使用します。
  2. タイマーやその他の手段を使用して手動でタイムアウトを設定しないでください。デフォルトは正常です。
  3. connection:didFailWithError:代わりに、タイムアウトのために送信されるを処理する準備をしてください。
  4. 必要-[NSURLConnection cancel]に応じて、ユーザー アクションなどに応じて、 を使用して接続を手動でキャンセルできます。
于 2010-12-15T16:30:02.490 に答える