我有一个带有一些NSOperations的NSOperationQueue (特别是NSInvocationOperations)。此操作执行一些计算并相应地更改UI元素的状态(当然,通过performSelectorOnMainThread:...),通常使用动画。
我的UI有UINavigationViewController和一些用于导航到其他视图的按钮。因此当计算/动画仍在进行中时,用户可以离开当前视图。我需要的是以某种方式停止这一点,直到用户返回到当前视图。
我找到的唯一解决方案是创建一些线程安全的布尔值标志-并在所有线程中检查它(类似于: while !flag sleep_for_some_time;)。有没有更好的东西?
发布于 2010-10-16 04:14:46
这个问题有点模糊,所以在不了解所有代码的情况下很难说。话虽如此,我可以通过以下方式来解决这个问题:
选项1.在KVO的子类中,添加您自己的原子NSOperation属性"isPaused“。在操作本身内,观察该属性,并在它发生变化时进行相应的处理。
选项2.您是否曾经暂停操作队列本身?如果是这样,请考虑从您的操作中观察该属性,如果该值发生更改,则每个操作都可以独立执行操作。
选项3.取消队列中的所有操作,如果视图再次出现,只需重新启动新的操作。
不过,总的来说,暂停已经在进行中的操作没有灵丹妙药。你将不得不烘焙你自己的解决方案。不过,损害应该不会太严重。
https://stackoverflow.com/questions/3667060
复制相似问题