kpo*_*wer 7 iphone nsoperation nsoperationqueue
我有NSOperationQueue
一些NSOperations
(NSInvocationOperations
特别是).此操作会进行一些计算并相应地(当然,通过performSelectorOnMainThread:...
)更改UI元素的状态,通常使用动画.
我的UI有UINavigationViewController和一些用于导航到另一个视图的按钮.因此,用户可以保留当前视图,而计算/动画仍在进行中.我需要的是以某种方式停止这一点,直到用户回到当前视图.
我找到的唯一解决方案是创建一些线程安全的布尔标志 - 并在所有线程中检查它(类似于:while!flag sleep_for_some_time;).还有更好的东西吗?
小智 13
问题有点模糊,所以很难说不知道所有的代码.话虽如此,我可以通过以下方式解决问题:
选项1.在NSOperation的子类中,添加自己的原子KVO属性"isPaused".在操作本身内,观察该属性并在其发生变化时进行相应处理.
选项2.您是否曾暂停操作队列?如果是这样,请考虑从您的操作中观察该属性,并且如果该值发生更改,则每个属性都可以独立执行.
选项3.取消队列中的所有操作,如果视图再次出现,则只需使用新操作重新启动.
但总的来说,暂停正在进行的操作没有灵丹妙药.你必须烘焙自己的解决方案.但是伤害不应该太糟糕.