【问题标题】:Saving paused NSOperationQueue to file将暂停的 NSOperationQueue 保存到文件
【发布时间】:2016-05-12 13:01:11
【问题描述】:

可以说,我在 NSOperation 块中运行了一个复杂的计算。我已经暂停了。关闭了应用程序。然后重新启动应用程序。我可以恢复上一个状态并从那里继续吗? 是否有针对此类问题的现有解决方案,或者只能为特定目的定制?

【问题讨论】:

    标签: objective-c objective-c-blocks nsoperation nsoperationqueue read-write


    【解决方案1】:

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

    选项 1. 在您的 NSOperation 子类中,添加您自己的原子 KVO 属性“isPaused”。在操作本身中,观察该属性并在它发生变化时进行相应的处理。

    选项 2。您是否曾暂停操作队列本身?如果是这样,请考虑从您的操作中观察该属性,如果该值发生变化,每个人都可以独立地采取行动。

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

    不过,总的来说,没有什么灵丹妙药可以暂停已经在进行的操作。您必须自己烘焙解决方案。不过伤害应该不会太严重。

    暂停和恢复队列如果您想暂时停止操作的执行,您可以使用 setSuspended: 方法暂停相应的操作队列。

    暂停队列不会导致已经执行的操作在其任务中间暂停。它只是防止新操作被安排执行。您可能会暂停队列以响应用户暂停任何正在进行的工作的请求,因为预期用户最终可能希望恢复该工作。

    更多详情请参考此链接苹果文档:http://developer.apple.com/library/mac/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationObjects/OperationObjects.html

    【讨论】: