2012-01-28 86 views
3

是否可以使用NSOperationQueue addOperationWithBlock來延遲初始化代碼,所以該應用程序沒有被iOS看門狗殺死?使用NSOperationQueue執行iOS應用程序初始化

正如我們所知,如果iOS應用程序花費太多時間在應用程序中:didFinishLaunchingWithOptions或applicationDidBecomeActive中,則會終止應用程序。

但我有很多事情要做的初始化。目前我正在做一堆同步的HTTP請求(讓它同步:),這可能需要不可預知的持續時間。

你能提出一個更好的解決方案來解決這個問題嗎?

謝謝!

編輯:每個人,同步的HTTP請求都不是問題的主題。 我有很多第三方SDK集成。我必須初始化它們,但我不知道它們在初始化過程中正在做什麼。我只是想盡量減少被iOS殺死的風險。

+1

我肯定會建議先讓你的http請求異步。把這個代碼(http代碼)放在一個NSOperation中是可以的,但並不真正使感官與做異步http請求相比 – rpechayr 2012-01-28 09:42:12

+0

@rpechayr一個用例我認爲完全合理的發佈同步提取(無論是通過NSOperationQueue還是GCD ),以免阻塞命名線程,這是iOS-5以前版本設備的四行後備,在NSURLConnection上沒有'+ sendAsynchronousRequest:queue:completionHandler:'。因此,我們正在討論如何爲當前少數用戶添加兼容性,同時嘗試編寫最少量的代碼以支持未來的可維護性。 – Tommy 2012-01-29 23:16:46

回答

2

異步執行您的Web請求,並在必要時顯示正在加載的用戶界面。你應該從來沒有application:didFinishLaunchingWithOptions:運行同步Web請求,看門狗是有原因的。

相關問題