NSOperation 和 GCD 都不能结束当前的耗时操作吗?

2017-06-28 17:00:40 +08:00
 C90

如果不是,该如何去结束正在进行还没有完成的任务?

4649 次点击
所在节点    iDev
26 条回复
C90
2017-06-28 19:45:51 +08:00
paradoxs
2017-06-28 19:47:27 +08:00
@C90 不行的吧.
a412739861
2017-06-28 20:08:07 +08:00
耗时不应该是扔到后台线程操作么?

NSOperation 自带的 cancel,但是似乎也只是个标记。如果是自己实现的 NSOperation,也就是执行过程中,检查 cancel 标记,如果有,则不执行,任务已经执行好像都没用了,顶多不处理后续结果。
GCD 你拿一个变量做标记也没问题吧。
以上都是执行前判断似乎。
C90
2017-06-28 20:58:25 +08:00
@a412739861 我调的是静态库的一个函数,没有立 flag 的机会,你说的这个不能解决,最后是用 17 楼的方法解决的
DingSoung
2017-06-30 10:59:14 +08:00
停不了,除非你线程挂掉
NUT
2017-09-16 23:00:55 +08:00
OP 的话 可以设置 Status 的状态,这个参考下 af1.x 的 代码。GCD 是没有停止的接口。 所以要保证操作的幂等性。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/371718

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX