iOS: GCD怎么取消

发布于 2022-08-29 23:03:49 字数 21 浏览 14 评论 0

iOS中GCD怎么取消?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

女皇必胜 2022-09-05 23:03:49

你需要NSOperation,NSOperation天生支持Cancel,调用其cancel方法即可

就是爱搞怪 2022-09-05 23:03:49

想取消的时候,在block中 return 就可以了

零時差 2022-09-05 23:03:49

GCD原生并不支持取消操作。
dispatch_suspend函数也只能暂停开启新的未执行的block,已经处于执行中的block是无法暂停的。

但是,通过参考NSOperation的cancel机制,你只要加一个外边变量,用于标记block是否需要取消。然后block中通过及时的检测这个外部变量的状态,当发现需要取消时,停止block中的后续操作,释放资源。就能达到及时取消block的目的。这里有个例子:https://github.com/Tinghui/HUIGCDDispatchAsync

无风消散 2022-09-05 23:03:49

Block 一旦在 dispatch queue 中 submit,这个 block 就交给了 GCD 处理,我们就无法控制这个 block了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文