【发布时间】:2010-08-19 21:41:15
【问题描述】:
使用NSUndoManager 时处理 iOS 4 应用程序终止的好方法是什么?
我有一个使用 Core Data 的 iPhone (iOS 4) 应用程序。该应用程序允许用户编辑托管对象,我使用NSUndoManager 以一种简单的方式实现撤消:在模态显示编辑器视图之前,我为托管对象上下文创建一个新的NSUndoManager。我还开始撤消分组,以便在用户点击“取消”按钮时可以轻松撤消任何更改。如果用户点击“保存”,我只需删除撤消管理器,更改就会永久生效。到目前为止,一切顺利。
如果用户在编辑对象的过程中按下主页按钮(或接听电话),应用程序将暂停。它向应用程序委托发送applicationDidEnterBackground 消息,我利用这个机会保存托管对象上下文。上下文当然包含新的编辑,只是等待NSUndoManager 撤消。
问题是:如果应用程序后来“未暂停”,NSUndoManager 仍然存在并且一切正常。但是,如果应用程序被操作系统“在睡眠中杀死”,撤消堆栈就会丢失,并且对对象所做的更改现在将成为永久性的。在重新启动时,我想将应用程序恢复到它被暂停之前的完全相同的状态,但这似乎需要我保存和恢复撤消堆栈。不幸的是,我找不到明显的方法来做到这一点。
是否有一种支持撤消的好方法,以便无论应用程序是否终止,它都能始终如一地工作?我希望我遗漏了一些明显的东西。任何帮助或建议将不胜感激。
【问题讨论】:
标签: iphone cocoa-touch ios4 nsundomanager