代码之家  ›  专栏  ›  技术社区  ›  kpower

暂停NSO操作

  •  6
  • kpower  · 技术社区  · 14 年前

    我有 NSOperationQueue 用一些 NSOperations NSInvocationOperations performSelectorOnMainThread:... ),通常使用动画。

    我的UI有UINavigationViewController和一些用于导航到其他视图的按钮。所以用户可以在计算/动画仍在进行时离开当前视图。我需要的是在用户返回当前视图之前停止这个操作。

    我找到的唯一解决方案是创建一些线程安全的布尔标志,并在所有线程中检查它(比如:while!标记睡眠时间)。有更好的吗?

    1 回复  |  直到 14 年前
        1
  •  13
  •   Jackie Treehorn    14 年前

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

    方案1。在NSOperation的子类中,添加您自己的原子KVO属性“isPaused”。在操作本身中,观察该属性并在其发生更改时进行相应的处理。

    方案2。您是否挂起过操作队列本身?如果是这样,请考虑从操作中观察该属性,如果该值发生变化,则每个属性都可以独立地采取行动。

    方案3。取消队列中的所有操作,如果视图再次出现,只需重新启动新操作即可。

    不过,总的来说,没有什么灵丹妙药可以用来暂停正在进行的操作。你得自己动手。不过,损失应该不会太大。