我正在学习 iOS的并发编程。到目前为止,我已经阅读了NSOperation/NSOperationQueue和GCD. 使用over 和反之 的原因是什么?NSOperationQueue``GCD
NSOperation
NSOperationQueue
GCD
NSOperationQueue``GCD
听起来两者都一样,GCD并且从用户那里NSOperationQueue抽象出显式创建。NSThreads然而,这两种方法之间的关系对我来说并不清楚,所以任何反馈都值得赞赏!
NSThreads
GCD是一个基于 C 的低级 API,可以非常简单地使用基于任务的并发模型。NSOperation并且NSOperationQueue是做类似事情的 Objective-C 类。NSOperation最先引入,但从10.5和iOS 2开始,NSOperationQueue朋友内部使用GCD.
通常,您应该使用适合您需要的最高抽象级别。这意味着您通常应该使用NSOperationQueue而不是GCD,除非您需要做一些NSOperationQueue不支持的事情。
请注意,这NSOperationQueue不是 GCD 的“简化”版本。事实上,有很多事情你可以NSOperationQueue用 pure 做很多工作GCD。(例如:带宽受限的队列,一次只运行 N 个操作;建立操作之间的依赖关系。两者都非常简单NSOperation,GCD使用NSOperation. 除非您有理由不这样做,否则请利用他们的工作。
警告 :另一方面,如果您真的只需要发送一个块,并且不需要NSOperationQueue提供的任何附加功能,那么使用 GCD 没有任何问题。只要确保它是适合这项工作的工具。