ios – 将主队列设置为NSOperationQueue的基础队列

NSOperationQueue类有一个underlyingQueue属性,用于设置将在其上执行NSOperation实例的调度队列.

let dispatchQueue = dispatch_queue_create("custom.queue", DISPATCH_QUEUE_SERIAL)
let opQueue = NSOperationQueue()
opQueue.underlyingQueue = dispatchQueue

但是,官方文件指出:

The value of this property must not be the value returned by dispatch_get_main_queue

Apple似乎没有更多关于这个主题的解释.但是,使用主队列作为underlyingQueue不会引发任何错误,也不会产生任何不需要的行为.这背后的原因是什么?

最佳答案 可能有很多原因;一旦发生死锁的可能性,你需要向Apple寻求明确的答案.

如果您的整个操作必须在主队列上执行,那么您可以使用NSOperationQueue.mainQueue获取与主线程关联的操作队列.如果只需要在主队列上执行部分操作(例如更新UI元素),那么您可以根据需要同步或异步地将该操作分派到主队列中.

点赞