iOS块被调用什么线程?

我正在从斯坦福视频学习块.我现在正在解释核心数据.老师提到一些关于:
- (void)openWithCompletionHandler:(void (^)(BOOL success))completionHandler;

他说完整的处理程序块将被调用调用方法的线程中.所以基本上该方法运行异步,但块被调用在线程,让我们假设main.

所以我的问题是,所有的块都在方法调用的线程上运行.为了说明为什么我问这个问题,我有一个Async类,它要求一个服务器.

所有这些方法的格式是这样的:

- (void) getSomething:(id <delegateWhatever> const)delegate{
   goto background thread using GCD..
   Got result from server...
   Go back to main thread and call the delegate method...
}

当我使用块,我不需要担心回到主线程,如果他们将被调用在哪里进行调用

希望这是清楚的,

提前致谢

解决方法

如果某些东西异步运行,您应该阅读文档以了解哪个线程,例如完成块将被执行.如果是你的代码,你在这里负责,你可以使用全局GCD队列,你可以创建自己的队列并在那里执行任何…

通常,块的行为就像函数方法调用,它在线程上执行,它调用它.甚至可能同时从两个不同的线程执行相同的块.

只是要清楚:即使你使用块,你需要关心回到主线程,当然如果有必要

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...