我正在努力做到这一点,所以,我的问题是:
当我像这样实例化NSOperationQueue时:
NSOperationQueue * operationQueue = [[NSOperationQueue alloc] init];
然后向其添加操作:
[operationQueue addOperation:....];
操作永远不会在主线程上运行吗?
什么告诉我,我添加到队列的任何操作都是在100%的时间在后台线程上运行而从不在主线程上运行?它只是NSOperationQueues的设计方式吗?
谢谢
答案 0 :(得分:1)
正确,主线程永远不会为操作队列(+[NSOperationQueue mainQueue]
返回的主操作队列除外)提供服务。来自NSOperationQueue
class reference:
操作队列通常提供用于运行它们的线程 操作。在OS X v10.6及更高版本中,操作队列使用 libdispatch库(也称为Grand Central Dispatch)启动 执行他们的业务。结果,操作总是如此 在一个单独的线程上执行,无论它们是否存在 指定为并发或非并发操作。