Cocoa开发中的撤销重做与异常处理
1. 撤销与重做功能
在Cocoa开发里, NSUndoManager 负责处理撤销和重做操作。比如在ColorMix应用中,改变颜色的操作都能通过编辑菜单中的选项进行撤销和重做,并且这些操作是针对特定文档的,不同文档间的操作相互独立。
在Core Data应用中,基本的撤销和重做功能通常会自动实现,无需额外编写代码。这是因为处理模型对象的托管对象上下文能够检测到对象的编辑操作,并将反向操作添加到“撤销栈”中。
1.1 撤销栈的工作原理
撤销和重做功能的基本原理是:每次在应用中进行编辑操作时,需要创建一个代表该编辑反向操作的项目。例如,用户在文本末尾添加字母“X”,就需要有一段代码创建一个能删除这个“X”的操作表示,然后将其放入“撤销栈”。当执行“撤销”命令时,会从撤销栈顶部取出最近的项目并执行其描述的操作。同时,执行“撤销”命令会创建一个新的项目,即撤销操作的反向操作(实际上就是原始编辑操作),并将其放入“重做栈”,以便用户后续撤销撤销操作。
Cocoa实现撤销操作的特殊之处在于,每个撤销项目是通过目标对象、要调用的方法选择器以及所需的参数隐式构建的。当触发“撤销”命令时,无需进行解码或查找,直接像调用其他Objective - C方法一样调用该方法。
1.2 示例代码
以下是一个简单的示例,展示如何使设置名称的操作可撤销:
- (void)setName:(NSString *)newName {
if (
被折叠的 条评论
为什么被折叠?



