扫码关注官方订阅号
iOS中GCD怎么取消?
认证0级讲师
你需要NSOperation,NSOperation天生支持Cancel,调用其cancel方法即可
想取消的时候,在block中 return 就可以了
return
GCD原生并不支持取消操作。 dispatch_suspend函数也只能暂停开启新的未执行的block,已经处于执行中的block是无法暂停的。
但是,通过参考NSOperation的cancel机制,你只要加一个外边变量,用于标记block是否需要取消。然后block中通过及时的检测这个外部变量的状态,当发现需要取消时,停止block中的后续操作,释放资源。就能达到及时取消block的目的。这里有个例子:https://github.com/Tinghui/HUIGCDDispatchAsync
Block 一旦在 dispatch queue 中 submit,这个 block 就交给了 GCD 处理,我们就无法控制这个 block了。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
你需要NSOperation,NSOperation天生支持Cancel,调用其cancel方法即可
想取消的时候,在block中
return
就可以了GCD原生并不支持取消操作。
dispatch_suspend函数也只能暂停开启新的未执行的block,已经处于执行中的block是无法暂停的。
但是,通过参考NSOperation的cancel机制,你只要加一个外边变量,用于标记block是否需要取消。然后block中通过及时的检测这个外部变量的状态,当发现需要取消时,停止block中的后续操作,释放资源。就能达到及时取消block的目的。这里有个例子:https://github.com/Tinghui/HUIGCDDispatchAsync
Block 一旦在 dispatch queue 中 submit,这个 block 就交给了 GCD 处理,我们就无法控制这个 block了。