2012-01-28 9 views
3

NSOperationQueue addOperationWithBlockを使用して初期化コードを遅延させても問題ないので、アプリはiOSのウォッチドッグによって強制終了されませんでしたか?NSOperationQueueを使用してiOSアプリケーションの初期化を実行する

私たちが知っているように、iOSはアプリケーション:didFinishLaunchingWithOptionsまたはapplicationDidBecomeActiveにあまりにも多くの時間を費やすと、アプリケーションを終了させます。

しかし、私は初期化のために多くのことがあります。現在、私は同期的なHTTPリクエストをしています(それを同期させましょう:)。予期せぬ時間がかかることがあります。

この問題のより良い解決策を提案できますか?

ありがとうございました!

編集:誰でも、同期されたHTTPリクエストは問題の対象ではありません。 多くのサードパーティ製SDKが統合されています。私はそれらのすべてを初期化する必要がありますが、初期化中に何をしているのか分かりません。私は、iOSで殺される危険性を最小限に抑えようとしています。

+1

まず、httpリクエストを非同期にすることをお勧めします。このコード(httpコード)をNSOperationに入れてもOKですが、非同期HTTPリクエストと比較して、実際には意味をなさない – rpechayr

+0

@rpechayr NSOperationQueueまたはGCD経由で発行された同期フェッチについては、 )という名前のスレッドをブロックしないようにするのは、NSURLConnection上に '+ sendAsynchronousRequest:queue:completionHandler:'がないpre-iOS 5デバイスの4行のフォールバックです。だから、私たちは、現在の大規模ではあるが、縮小しつつある少数のユーザーに対して、将来の保守性を助けるために最小限のコードを書こうとする一方で、互換性を追加することを話している。 – Tommy

答えて

2

Webリクエストを非同期的に実行し、必要に応じて、進行中にUIの読み込みを表示します。 は同期ウェブリクエストをapplication:didFinishLaunchingWithOptions:で実行しないでください。理由はウォッチドッグがあるからです。

関連する問題