NSOperationQueue何时从队列中删除操作?

时间:2014-02-03 06:49:28

标签: ios nsoperation nsoperationqueue

我需要知道NSOperationQueue何时从队列中删除操作? 我的NSOperationQueue列有NSOperation。此时NSOperationQueue从队列中删除了一个操作?

  1. 开始手术后? OR
  2. 完成/取消操作后?
  3. 因为NSOPerationqueue中的所有操作都已完成,我需要通知。为此,我提到了this link

2 个答案:

答案 0 :(得分:11)

根据Apple Developer Reference

  

操作队列基于执行排队的NSOperation对象   他们的优先事项和准备就绪添加到操作队列后,   操作将保留在队列中,直到报告已完成   完成任务。

因此,NSOperationQueue在完成后删除了一个操作。

来源 - https://developer.apple.com/library/mac/documentation/Cocoa/Reference/NSOperationQueue_class/Reference/Reference.html

答案 1 :(得分:6)

NSOperationQueue管理其NSOperation s的内部队列。 NSOperation只有在取消或完成后才会从队列中删除。

请注意,如果NSOperation被取消,它只会在NSOperation对象中设置相应的标记以将其标记为 - NSOperation的实现负责检查它是否正确取消并标记自己相应完成。未启动的操作应该检查它是否在启动时被取消,并在标记完成后立即返回。正在执行的长时间运行操作需要定期检查是否已取消并以类似方式处理该状态。

在执行破坏性代码或将改变数据的代码之前执行此检查也是有意义的,例如从核心数据保存或删除托管对象。

请参阅https://developer.apple.com/reference/foundation/nsoperation/1411672-cancel?language=objc