Operation 和 OperationQueues 的同步和异步状态

sync and async status of Operation and OperationQueues

我正在阅读有关 OperationQueue 的文档。

我有这个疑问,我们正在创建的操作、BlockOperation 和 OperationQueue 的同步和异步状态是什么。

据我了解,它将 运行 作为同步操作,但如果我们想以异步方式 运行 它,我们必须使用 [=18] 以异步方式分派它=].

我理解的对吗?

当您提交块到 BlockOperation returns(或 main 方法,如果您子类化 Operation 时,同步操作将被视为由 OperationQueue 完成)

异步操作(即从其 isAsynchronous 属性 返回 true),必须通过设置 [=17] 在 Operation 的子类中手动标记为已完成=](同时设置isExecuting = false)。这允许您使用 Dispatch.async 将您需要做的任何工作分派到不同的队列,但仍将操作保留在 OperationQueue 中。这对于构建依赖操作或仅允许并行 运行 的特定数量的操作很有用。

Apple 的 Operation docs 对所有这些都有很好的解释。