Swift多线程开发 - 9. 取消Operation

2020-04-04  本文已影响0人  JaiUnChat

在诸如用户离开当前页面的情况下,还没有完成的网络加载可能就不需要继续完成了,这时候就可以通过cancel来取消正在进行中的Operaiton

cancelOperation状态会做如下改变

状态 cancel前 cancel后
isExecuting true false
isFinished false true
isCancelled false true

事实上,Operation基类对于cancel的方法的紧紧只是更新了状态标志。剩余的任务处理还需要我们在子类中实现。当然,start()方法会在开头检测isCancelled属性,确保已经被取消的任务不会再开始

至于真正的取消再执行中的任务,只能手动在实际任务代码中去检测当前的状态是不是isCancelled,如果是的话就终止任务,比如上传下载的进度回调方法中。
或者重写cancel()方法,主动对正在执行中的任务进行终止操作,如果当前的任务支持种终止的话。


作者博客地址

系列文章链接

上一篇下一篇

猜你喜欢

热点阅读