目标c - 取消NSOperationQueue中的操作

时间:2012-07-10 09:44:13

标签: objective-c ios nsoperation nsoperationqueue afnetworking

我正在使用AFNetworking AFHTTPClient作为示例,但这个问题一般是NSOperationQueue

AFHTTPClient为客户提出的请求管理NSOperationQueue

它还有cancelAllOperations方法迭代self.operationQueue.operations并为每个方法调用[operation cancel]

如果我理解这一点,它将取消队列中等待的所有操作 - 这意味着尚未启动的操作,但是当前正在运行的操作是什么?他们不会被取消?

1 个答案:

答案 0 :(得分:2)

来自Apple的文档

  

对于当前正在执行的操作,取消表示该操作   对象的工作代码必须检查取消状态,停止它是什么   做,并标记自己完成。对于排队的操作但是   尚未执行,队列仍然必须调用操作对象   启动方法,以便它可以处理取消事件和标记   本身就完了。

     

操作将保留在队列中,直到报告完成为止   有它的任务。完成任务并不一定意味着   操作执行该任务完成。操作也可以   取消。取消操作对象会将对象留在队列中   但通知对象它应该尽快中止其任务   可能。对于当前正在执行的操作,这意味着   操作对象的工作代码必须检查取消状态,停止   它正在做什么,并将自己标记为已完成。对于那些操作   排队但尚未执行,队列仍然必须调用该操作   object的start方法,以便它可以处理取消事件   并标记为已完成。