小编典典

NSOperation 与 Grand Central Dispatch

all

我正在学习 iOS的并发编程。到目前为止,我已经阅读了NSOperation/NSOperationQueueGCD.
使用over 和反之 的原因是什么?NSOperationQueue``GCD

听起来两者都一样,GCD并且从用户那里NSOperationQueue抽象出显式创建。NSThreads然而,这两种方法之间的关系对我来说并不清楚,所以任何反馈都值得赞赏!


阅读 84

收藏
2022-03-14

共1个答案

小编典典

GCD是一个基于 C 的低级
API,可以非常简单地使用基于任务的并发模型。NSOperation并且NSOperationQueue是做类似事情的 Objective-C
类。NSOperation最先引入,但从10.5iOS
2
开始,NSOperationQueue朋友内部使用GCD.

通常,您应该使用适合您需要的最高抽象级别。这意味着您通常应该使用NSOperationQueue而不是GCD,除非您需要做一些NSOperationQueue不支持的事情。

请注意,这NSOperationQueue不是 GCD 的“简化”版本。事实上,有很多事情你可以NSOperationQueue用 pure
做很多工作GCD。(例如:带宽受限的队列,一次只运行 N
个操作;建立操作之间的依赖关系。两者都非常简单NSOperationGCD使用NSOperation.
除非您有理由不这样做,否则请利用他们的工作。

警告 :另一方面,如果您真的只需要发送一个块,并且不需要NSOperationQueue提供的任何附加功能,那么使用 GCD
没有任何问题。只要确保它是适合这项工作的工具。

2022-03-14