写出使用GCD方式从子线程回到主线程的方法代码?
参考答案:
在Objective-C和Swift中,我们可以使用Grand Central Dispatch (GCD) 从子线程安全地返回到主线程。以下是在两种语言中的示例代码:
Objective-C:
dispatch_async(dispatch_get_main_queue(), ^{
// 这里的代码会在主线程中执行
});
Swift:
DispatchQueue.main.async {
// 这里的代码会在主线程中执行
}
以上两种方法都使用了GCD的队列(queue)来执行代码。dispatch_get_main_queue()
和DispatchQueue.main
都是获取主线程的队列。然后,我们使用dispatch_async
或async
方法来异步地在这个队列上执行代码,这意味着代码将在主线程中执行,但是不会阻塞主线程。
这是一个非常重要的概念,因为在iOS中,只有主线程可以更新UI。所以,如果你从子线程中更新UI,你的应用可能会崩溃。因此,当你需要从子线程更新UI时,你应该使用上述方法将代码块返回到主线程。