我需要暂停运行的NSOperation这是插在一个NSOperationQueue。 目前,我取消所有操作,并重新启动它们。 但是,这会导致某种形式的重复中完成的过程而言。 我试着用NSOperationQueue的setSuspended标志。 但它不是暂停操作。 有什么办法呢?
Answer 1:
看到这一点: 链接
在这里,来自苹果文档 :
方法:暂停,如果你想发出暂时停止操作的执行恢复队列,可以使用setSuspended暂停相应的操作队列。
暂停队列不会导致已经执行的操作在他们的任务中间暂停。 它只是防止被调度执行的新操作。 你可能会在响应用户请求暂停任何正在进行的工作暂停队列,因为预期的是,用户可能最终要恢复这项工作。
Answer 2:
我还没有尝试,但我可能会从这里开始:
- 添加
isPaused
标志,您NSOperation
子类 - 实现对操作的数据复制/移动方法
- 如果暂停,
setCancelled:
手表在这种变化-main
) - 创建一个新的操作从暂停操作,以新的操作移动状态
- 调整优先级队列重新排序操作顺序,如果你喜欢
- 克隆添加到队列
- 从返回
-main
如果-main
注意,这将只是挂起。 如果你真的想暂停和恢复明确,你会手动“新operation`当你想恢复。
现在,如果你正在观察或有特殊完井,那么你将有一些其他的问题。 对于简单的情况下,似乎这种做法似乎很好地工作。
文章来源: How can I Pause a NSOperation in a NSOperationQueue?