我想知道AppDelegate是否是线程安全的?我目前有一个在辅助线程上运行网络任务的操作,当任务开始时,我想将NetworkActivityIndicatorVisible
设置为YES
,当任务完成后,将其设置为NO
。我是否必须始终在主线程中调用它,或者我可以在当前的运行循环线程中执行它?
由于
答案 0 :(得分:7)
通常,UIKit不是线程安全的。虽然你可能能够“逃脱”某些事情,但你应该总是在主线程上做UIKit的东西。有一些记录良好的例外情况。
从后台线程执行此操作的模式很简单。
dispatch_async(dispatch_get_main_queue(), ^{
// Put any code you want to execute in the main thread here.
});
传递给dispatch_async的块内的代码将被安排在主运行循环中运行。