我需要知道NSOperationQueue
何时从队列中删除操作?
我的NSOperationQueue
列有NSOperation
。此时NSOperationQueue
从队列中删除了一个操作?
因为NSOPerationqueue
中的所有操作都已完成,我需要通知。为此,我提到了this link
答案 0 :(得分:11)
根据Apple Developer Reference
操作队列基于执行排队的NSOperation对象 他们的优先事项和准备就绪添加到操作队列后, 操作将保留在队列中,直到报告已完成 完成任务。
因此,NSOperationQueue
在完成后删除了一个操作。
答案 1 :(得分:6)
NSOperationQueue
管理其NSOperation
s的内部队列。 NSOperation只有在取消或完成后才会从队列中删除。
请注意,如果NSOperation
被取消,它只会在NSOperation
对象中设置相应的标记以将其标记为 - NSOperation
的实现负责检查它是否正确取消并标记自己相应完成。未启动的操作应该检查它是否在启动时被取消,并在标记完成后立即返回。正在执行的长时间运行操作需要定期检查是否已取消并以类似方式处理该状态。
在执行破坏性代码或将改变数据的代码之前执行此检查也是有意义的,例如从核心数据保存或删除托管对象。
请参阅https://developer.apple.com/reference/foundation/nsoperation/1411672-cancel?language=objc