操作和OperationQueues的同步和异步状态

时间:2017-03-26 18:49:12

标签: ios swift nsoperation nsoperationqueue

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

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

正如我所理解的那样,它将作为同步操作运行,但是如果我们想以异步方式运行它,我们必须使用dispatch.async以异步方式将其分发。

我理解对吗?

1 个答案:

答案 0 :(得分:1)

当您提交给OperationQueue的广告单元返回时,BlockOperation同步操作将被视为完成(如果您继承main,则会Operation方法

异步操作(从true属性返回isAsynchronous)必须通过设置OperationisFinished = true的子类中手动标记为已完成(您还应该同时设置isExecuting = false)。这允许您使用Dispatch.async将您需要做的任何工作分配到不同的队列,但仍然将操作保留在OperationQueue中。这对于构建相关操作或仅允许一定量的操作并行运行非常有用。

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