在什么情况下你更喜欢使用NSOperationQueue
而不是GCD?
根据我对这两者的有限经验,我认为NSOperationQueue
你基本上可以控制有多少并发操作。
使用GCD时,您无法执行此操作,因为您正在使用队列。除非你可以用多核处理器以某种方式模拟这个,但我仍然认为没有办法控制它。
答案 0 :(得分:19)
NSOperationQueue
构建于iOS {4}上的GCD
。使用最简单的API来完成手头的任务。如果是性能问题,请测量然后根据需要重新评估。dispatch_async
较低等级,通常是C型的东西(但不限于此),适用于一次性和顺序式交易。 NSOperationQueues是更高级别的Objective-C,如果你在代码中的不同点添加大量操作,和/或需要管理并发性,优先级和依赖性,那就很好。
答案 1 :(得分:7)
我假设NSPriorityQueue你的意思是NSOperationQueue?使用NSOperationQueue优于GCD的主要原因是您需要其附加功能:
否则,除非您使用的是采用NSOperationQueue的API,否则GCD可能是更好的选择
答案 2 :(得分:0)
在更高级别,我发现NSOperationQueue更优雅地管理任务/操作,而不是使用GCD在较低级别处理它们。