有人说必须在主线程中使用UIApplication,但我没有在Apple的文档中看到这一点。 那么有人可以告诉我在单独的线程中使用UIApplication是否安全吗?如果不安全,这会记录在哪里?
修改 我专注于那些操纵本地通知的方法。
答案 0 :(得分:5)
大多数UIKit类都不是线程安全的。这已经在WWDC等上进行了详细的讨论,但是没有很好的记录。我能找到的最好的是TN2109,它反复讨论了如何不允许从辅助线程调用UIKit。
请注意,此规则有许多记录的例外情况。例如,UIApplication上的beginBackgroundTaskWithExpirationHandler和相关方法明确标记为从非主线程调用是安全的。 (这也意味着UIApplication的其他方法不从其他线程调用是安全的,因为这些是特别调用的。)
此规则还有其他例外,主要涉及绘图(UIImage和UIColor实例至少是iOS 4的线程安全的)。
答案 1 :(得分:0)
UIApplication是UIResponder的子类,是UIKit框架的一部分。所以我猜它不是线程安全的,因为据记载UIKit类不是线程安全的。
它还有像setStatusBarOrientation:animated:这样的方法,它们都是基于UI的,并且绝对不能在主线程之外的另一个线程中调用。