I have NSOperationQueue
和一些NSOperations
in it (NSInvocationOperations
, 尤其)。此操作会进行一些计算并相应地更改 UI 元素的状态(当然,通过performSelectorOnMainThread:...
),通常与动画一起使用。
我的 UI 有 UINavigationViewController 和一些用于导航到另一个视图的按钮。因此,用户可以离开当前视图,而计算/动画仍在进行中。我需要的是以某种方式停止这种情况,直到用户返回到当前视图。
我发现的唯一解决方案是创建一些线程安全的布尔标志 - 并在所有线程中检查它(例如: while !flag sleep_for_some_time;)。还有更好的吗?
这个问题有点模糊,所以在不知道所有正在运行的代码的情况下很难说。话虽如此,我可以通过以下方式解决这个问题:
选项 1. 在 NSOperation 的子类中,添加您自己的原子 KVO 属性“isPaused”。在操作本身中,观察该属性并在其发生变化时进行相应处理。
选项 2. 您是否曾经暂停过操作队列本身?如果是这样,请考虑在操作中观察该属性,并且如果该值发生变化,每个操作都可以独立采取操作。
选项3.取消队列中的所有操作,如果视图再次出现,只需重新启动新操作。
但总的来说,没有什么灵丹妙药可以暂停正在进行的操作。你必须自己烘焙解决方案。不过伤害应该不会太严重。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)