首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >暂停NSOperation

暂停NSOperation
EN

Stack Overflow用户
提问于 2010-09-08 19:09:42
回答 1查看 5.9K关注 0票数 7

我有一个带有一些NSOperationsNSOperationQueue (特别是NSInvocationOperations)。此操作执行一些计算并相应地更改UI元素的状态(当然,通过performSelectorOnMainThread:...),通常使用动画。

我的UI有UINavigationViewController和一些用于导航到其他视图的按钮。因此当计算/动画仍在进行中时,用户可以离开当前视图。我需要的是以某种方式停止这一点,直到用户返回到当前视图。

我找到的唯一解决方案是创建一些线程安全的布尔值标志-并在所有线程中检查它(类似于: while !flag sleep_for_some_time;)。有没有更好的东西?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-16 04:14:46

这个问题有点模糊,所以在不了解所有代码的情况下很难说。话虽如此,我可以通过以下方式来解决这个问题:

选项1.在KVO的子类中,添加您自己的原子NSOperation属性"isPaused“。在操作本身内,观察该属性,并在它发生变化时进行相应的处理。

选项2.您是否曾经暂停操作队列本身?如果是这样,请考虑从您的操作中观察该属性,如果该值发生更改,则每个操作都可以独立执行操作。

选项3.取消队列中的所有操作,如果视图再次出现,只需重新启动新的操作。

不过,总的来说,暂停已经在进行中的操作没有灵丹妙药。你将不得不烘焙你自己的解决方案。不过,损害应该不会太严重。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3667060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档