operation.cancel()不取消当前操作

Wan*_*use 1 nsoperation nsoperationqueue swift

使用operation.cancel()不会取消当前操作.如果队列中有操作,它似乎取消它,但如果它正在执行,那么它似乎不会停止它.

我是否需要将某些内容发送回我的子类操作中的main()函数以使其停止?

for operation in downloadQueue.operations {
    if operation.name == opName {
        if operation.isExecuting == true {
           operation.cancel()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

sim*_*ere 6

请参阅以下文档:https://developer.apple.com/reference/foundation/operationqueue

取消操作对象会将对象留在队列中,但会通知对象它应该尽快中止其任务.对于当前正在执行的操作,这意味着操作对象的工作代码必须检查取消状态,停止它正在执行的操作,并将自己标记为已完成.

基本上,您的操作代码应检查isCancelled并在需要时停止.例如,您可能有一个循环处理数据项,您可以在处理每个项目之前检查isCancelled.