执行主线程

在异步执行任务时,通常需要确保在主线程上运行一段代码。例如,你可能希望异步命中 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 = //....
    });
}

每当你在屏幕上更新视图时,请始终确保你在主线程上执行此操作,否则可能会发生未定义的行为。