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

jai*_*ani 12 nsoperation nsoperationqueue ios

我需要知道什么时候NSOperationQueue从队列中删除一个操作?我有NSOperationQueue哪个列表NSOperation.从哪个位置NSOperationQueue删除队列中的操作?

  1. 开始手术后?要么
  2. 完成/取消操作后?

因为在NSOPerationqueue完成所有操作后我需要通知.为此,我提到了 这个链接

Inf*_*ity 11

根据Apple Developer Reference

操作队列根据其优先级和准备情况执行其排队的NSOperation对象.在添加到操作队列之后,操作将保留在其队列中,直到它报告它已完成 其任务.

因此,NSOperationQueue在完成后删除操作.

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

  • 请注意,如果操作被取消,它只是在操作中设置适当的标志以将其标记为 - 操作本身负责检查它是否被取消并标记自己相应地完成.未启动的操作*应*检查启动时是否取消,并在标记完成后立即返回.正在执行的操作需要定期检查它是否被取消并以类似的方式处理它.请参阅https://developer.apple.com/reference/foundation/nsoperation/1411672-cancel?language=objc (6认同)

Aus*_*tin 6

NSOperationQueue管理其内部队列NSOperation.NSOperation将仅在取消或完成后从队列中删除.

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

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

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