我对NSUndoManager方法有疑问
registerUndoWithTarget:selector:object:
prepareWithInvocationTarget:
通常在示例中,“target”是管理所有模型对象(通常在数组中)的控制器对象。
但是目标可以是单个模型对象 - 撤消/重做操作要更改的模型对象吗?
guide说registerUndoWithTarget:selector:object:
:
目标对象可能不是状态正在改变的实际对象;相反,它可能是客户端对象,包含许多可撤销对象的文档或容器。
为什么这个限制?方法本身的文档中没有提到它。此外,prepareWithInvocationTarget:
方法没有提到这样的限制。
答案 0 :(得分:1)
你引用的文档有点含糊不清。我会读到这个:
目标对象可能不是状态为的实际对象 改变;相反,它可能是客户端对象,文档或 容纳许多可撤销对象的容器。
这样:
目标对象可能不是状态为的实际对象 改变;相反,它可能是客户端对象,文档或 容纳许多可撤销对象的容器
但是,通常最好不要将模型用作目标。目标未保留,因此可以在仍然在撤消堆栈上引用的情况下取消分配。定位拥有撤消管理器的控制器是个好主意。