NSOperationQueue从不在主线程上?

时间:2014-03-22 02:50:45

标签: cocoa nsoperation nsoperationqueue

我正在努力做到这一点,所以,我的问题是:

当我像这样实例化NSOperationQueue时:

  

NSOperationQueue * operationQueue = [[NSOperationQueue alloc] init];

然后向其添加操作:

  

[operationQueue addOperation:....];

操作永远不会在主线程上运行吗?

什么告诉我,我添加到队列的任何操作都是在100%的时间在后台线程上运行而从不在主线程上运行?它只是NSOperationQueues的设计方式吗?

谢谢

1 个答案:

答案 0 :(得分:1)

正确,主线程永远不会为操作队列(+[NSOperationQueue mainQueue]返回的主操作队列除外)提供服务。来自NSOperationQueue class reference

  

操作队列通常提供用于运行它们的线程   操作。在OS X v10.6及更高版本中,操作队列使用   libdispatch库(也称为Grand Central Dispatch)启动   执行他们的业务。结果,操作总是如此   在一个单独的线程上执行,无论它们是否存在   指定为并发或非并发操作。