可以说,我在NSOperation块中运行了一个复杂的计算。我已暂停了。关闭应用程序。然后重新启动应用程序。我可以恢复最后一个状态并从那里继续吗? 是否存在针对此类问题的现有解决方案,或者它只能为特定目的而定制?
答案 0 :(得分:0)
问题有点模糊,所以很难说不知道所有的代码。话虽如此,我可以通过以下方式解决问题:
选项1.在NSOperation的子类中,添加自己的原子KVO属性“isPaused”。在操作本身内,观察该属性并在其发生变化时进行相应处理。
选项2.您是否曾暂停操作队列?如果是这样,请考虑从您的操作中观察该属性,并且如果该值发生更改,则每个属性都可以独立执行。
选项3.取消队列中的所有操作,如果视图再次出现,则只需重新启动新操作。
总的来说,暂停正在进行的操作没有灵丹妙药。你必须烘焙自己的解决方案。但伤害不应该太糟糕。
挂起和恢复队列如果要暂时停止执行操作,可以使用setSuspended:方法挂起相应的操作队列。
暂停队列不会导致已执行的操作在其任务中间暂停。它只是阻止计划执行新操作。您可以暂停队列以响应用户请求暂停任何正在进行的工作,因为期望用户最终可能希望恢复该工作。
有关详细信息,请参阅此链接apple docs:http://developer.apple.com/library/mac/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationObjects/OperationObjects.html