2012-09-12 5 views
5

iOS 5のみで、私が取り組んでいるアプリケーションは、多数のリクエストを非同期に送信するとリクエストをドロップするようです。大きな意味はまだかなり小さい - 今すぐ30でテストするiOS 5で同時にNSURLConnectionリクエスト数に制限はありますか?

各要求はそれ自身のNSURLConnectionを使用し、比較的早く(つまり300 ms - 2s)返すことが期待されます。また、1つの接続を長時間開いたままにします。

5回目の接続がすべてデバイスを離れないようです。確かにサーバーに到達することはありませんし、チャールズを使ったネットワークデバッグでもリクエストが出てこないことさえありません。

オープンしているNSURLConnectionオブジェクトとアクティブな要求の同時発生数に制限があるのは誰か知っていますか?

私はこの問題がiOS 4では見られないことに注意する価値があります。私たちが長寿命の接続を切断すると、5回目のリクエストがそれ以上削除されないようです。

+2

に追加するには、次の呼び出しを使用することができるのiOS 5では

接続失敗の事例はまったく見つけられませんでした。私はこれがおそらくあなたがやっていることとは少し異なることを認識しています。おそらくドロップボックスアカウントから同じファイルを取り出して、状況が悪くなるのを見るテストアプリを開発することはできますが、システムが接続を切断する前にその数がかなり大きくなると思います。 –

答えて

4

NSOperationQueueは、この問題を管理する最善の方法です。一言で言えば、をNSBlockOperationにラップして、それをキューに追加します。キューを使用すると、同時接続の最大数などのさまざまなプロパティを設定できます。また、キューに入れられた操作を簡単に取り消すことができます。

WWDCビデオ(2012)のこのデザインパターンは、「iOSのコンカレントユーザーインターフェイスを構築する」という素晴らしいイントロです。あなたは私がNSOperationsQueueでNSOperationsに地雷を置く、そして多くの場合、数百のウェブは、一度にフェッチ発行NSURLConnectionを開始し、NSOperationQueue

+ (void)sendAsynchronousRequest:(NSURLRequest *)request queue:(NSOperationQueue *)queue completionHandler:(void (^)(NSURLResponse*, NSData*, NSError*))handler

関連する問題