将暂停的 NSOperationQueue 保存到文件
Saving paused NSOperationQueue to file
比方说,我在 NSOperation 块中有一个复杂的计算 运行。我已经暂停了。关闭应用程序。然后重新启动应用程序。我可以恢复上一个状态并从那里继续吗?
是否存在针对此类问题的现有解决方案,或者只能为特定目的定制?
这个问题有点含糊,所以如果不知道所有的代码就很难说。话虽如此,我可以通过以下方式解决问题:
选项 1. 在您的 NSOperation 子类中,添加您自己的原子 KVO 属性 "isPaused"。在操作本身中,观察 属性 并在它发生变化时进行相应处理。
选项 2。您是否曾暂停操作队列本身?如果是这样,请考虑从您的操作中观察 属性,如果该值发生变化,每个人都可以独立采取行动。
选项3.取消队列中的所有操作,如果视图再次出现,则重新启动新操作。
不过,总的来说,没有暂停正在进行的操作的灵丹妙药。你必须烘焙自己的解决方案。不过伤害应该不会太差。
暂停和恢复队列如果你想临时停止执行操作,你可以使用setSuspended:方法暂停相应的操作队列。
暂停队列不会导致已经执行的操作在任务中间暂停。它只是阻止新操作被安排执行。您可能会暂停队列以响应用户暂停任何正在进行的工作的请求,因为期望用户最终可能想要恢复该工作。
有关更多详细信息,请参阅此 link 苹果文档:http://developer.apple.com/library/mac/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationObjects/OperationObjects.html
比方说,我在 NSOperation 块中有一个复杂的计算 运行。我已经暂停了。关闭应用程序。然后重新启动应用程序。我可以恢复上一个状态并从那里继续吗? 是否存在针对此类问题的现有解决方案,或者只能为特定目的定制?
这个问题有点含糊,所以如果不知道所有的代码就很难说。话虽如此,我可以通过以下方式解决问题:
选项 1. 在您的 NSOperation 子类中,添加您自己的原子 KVO 属性 "isPaused"。在操作本身中,观察 属性 并在它发生变化时进行相应处理。
选项 2。您是否曾暂停操作队列本身?如果是这样,请考虑从您的操作中观察 属性,如果该值发生变化,每个人都可以独立采取行动。
选项3.取消队列中的所有操作,如果视图再次出现,则重新启动新操作。
不过,总的来说,没有暂停正在进行的操作的灵丹妙药。你必须烘焙自己的解决方案。不过伤害应该不会太差。
暂停和恢复队列如果你想临时停止执行操作,你可以使用setSuspended:方法暂停相应的操作队列。
暂停队列不会导致已经执行的操作在任务中间暂停。它只是阻止新操作被安排执行。您可能会暂停队列以响应用户暂停任何正在进行的工作的请求,因为期望用户最终可能想要恢复该工作。
有关更多详细信息,请参阅此 link 苹果文档:http://developer.apple.com/library/mac/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationObjects/OperationObjects.html