0

AFNetworking AFHTTPClient只是为了这个例子,但这个问题是关于NSOperationQueue一般的。

AFHTTPClient管理客户端发出的NSOperationQueue请求。

它还有一个cancelAllOperations方法可以遍历self.operationQueue.operations并调用[operation cancel]每个方法。

如果我理解正确,它将取消队列中等待的所有操作——这意味着尚未开始的操作,但是当前正在运行的操作呢?他们不会被取消??

4

1 回答 1

2

来自 Apple 的文档

对于当前正在执行的操作,取消意味着操作对象的工作代码必须检查取消状态,停止正在执行的操作,并将自己标记为已完成。对于已排队但尚未执行的操作,队列仍必须调用操作对象的 start 方法,以便它可以处理取消事件并将自己标记为已完成。

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

于 2012-07-10T09:55:35.620 回答