【发布时间】:2016-05-12 13:01:11
【问题描述】:
可以说,我在 NSOperation 块中运行了一个复杂的计算。我已经暂停了。关闭了应用程序。然后重新启动应用程序。我可以恢复上一个状态并从那里继续吗? 是否有针对此类问题的现有解决方案,或者只能为特定目的定制?
【问题讨论】:
标签: objective-c objective-c-blocks nsoperation nsoperationqueue read-write
可以说,我在 NSOperation 块中运行了一个复杂的计算。我已经暂停了。关闭了应用程序。然后重新启动应用程序。我可以恢复上一个状态并从那里继续吗? 是否有针对此类问题的现有解决方案,或者只能为特定目的定制?
【问题讨论】:
标签: objective-c objective-c-blocks nsoperation nsoperationqueue read-write
这个问题有点含糊,所以如果不了解所有代码就很难说。话虽如此,我可以通过以下方式解决问题:
选项 1. 在您的 NSOperation 子类中,添加您自己的原子 KVO 属性“isPaused”。在操作本身中,观察该属性并在它发生变化时进行相应的处理。
选项 2。您是否曾暂停操作队列本身?如果是这样,请考虑从您的操作中观察该属性,如果该值发生变化,每个人都可以独立地采取行动。
选项3.取消队列中的所有操作,如果视图再次出现,只需重新启动新操作即可。
不过,总的来说,没有什么灵丹妙药可以暂停已经在进行的操作。您必须自己烘焙解决方案。不过伤害应该不会太严重。
暂停和恢复队列如果您想暂时停止操作的执行,您可以使用 setSuspended: 方法暂停相应的操作队列。
暂停队列不会导致已经执行的操作在其任务中间暂停。它只是防止新操作被安排执行。您可能会暂停队列以响应用户暂停任何正在进行的工作的请求,因为预期用户最终可能希望恢复该工作。
【讨论】: