Swift多线程开发 - 9. 取消Operation
2020-04-04 本文已影响0人
JaiUnChat
在诸如用户离开当前页面的情况下,还没有完成的网络加载可能就不需要继续完成了,这时候就可以通过cancel
来取消正在进行中的Operaiton
了
被cancel
的Operation
状态会做如下改变
状态 | cancel前 | cancel后 |
---|---|---|
isExecuting | true | false |
isFinished | false | true |
isCancelled | false | true |
事实上,Operation
基类对于cancel的方法的紧紧只是更新了状态标志。剩余的任务处理还需要我们在子类中实现。当然,start()
方法会在开头检测isCancelled
属性,确保已经被取消的任务不会再开始
至于真正的取消再执行中的任务,只能手动在实际任务代码中去检测当前的状态是不是isCancelled
,如果是的话就终止任务,比如上传下载的进度回调方法中。
或者重写cancel()
方法,主动对正在执行中的任务进行终止操作,如果当前的任务支持种终止的话。
系列文章链接