执行主线程
在异步执行任务时,通常需要确保在主线程上运行一段代码。例如,你可能希望异步命中 REST API,但将结果放在屏幕上的 UILabel 中。在更新 UILabel 之前,你必须确保你的代码在主线程上运行:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//Perform expensive tasks
//...
//Now before updating the UI, ensure we are back on the main thread
dispatch_async(dispatch_get_main_queue(), ^{
label.text = //....
});
}
每当你在屏幕上更新视图时,请始终确保你在主线程上执行此操作,否则可能会发生未定义的行为。