2012-12-10 64 views
5

有人說在主線程中必須使用UIApplication,但我沒有在Apple的文檔中看到這一點。 那麼有人可以告訴我,如果在單獨的線程中使用UIApplication是否安全?如果它不安全,在哪裏記錄?iOS:正在調用主線程安全以外線程中的UIApplication方法嗎?

編輯: 我正在關注那些操縱本地通知的方法。

+0

如果你對你想使用的方法更具體,這將有所幫助。 – rmaddy

+0

@rmaddy謝謝你,我已經添加了我正在檢查的那些方法。 – CarmeloS

回答

5

大多數UIKit類不是線程安全的。在WWDC等已經詳細討論過這個問題,但沒有很好的文檔記錄。我能找到的最好的是TN2109,它反覆討論如何從輔助線程調用UIKit是不被允許的。

請注意,此規則有許多記錄的例外情況。例如,UIApplication上的beginBackgroundTaskWithExpirationHandler和相關方法明確標記爲可安全地從非主線程調用。 (這也意味着UIApplication的另一方法是安全地從其他線程調用,因爲這些是專門叫了。)

還有其他一些例外的情況爲好,大部分涉及繪畫(UIImage的,並UIColor實例至少爲iOS 4)是線程安全的。

0

UIApplication是UIResponder的一個子類,是UIKit框架的一部分。所以我想它不是線程安全的,因爲它被記錄爲UIKit類不是線程安全的。

另外它也有像 - setStatusBarOrientation:animated:這樣的方法,它們都是基於UI的,而且這些方法絕對不能在主線程之外的另一個線程中調用。

+0

當您操作UI時,它必須位於主線程上,但並非所有UIApplication方法都可以操作UI。在那些使用其他線程的情況下很好。 – sosborn

+0

我編輯了我的問題,我專注於處理本地通知的方法。 – CarmeloS

相關問題