Objective c 有没有办法查看撤消堆栈?
我正在学习撤销,我想了解一下Objective c 有没有办法查看撤消堆栈?,objective-c,cocoa,macos,undo,Objective C,Cocoa,Macos,Undo,我正在学习撤销,我想了解一下undoManager中的撤销对象(NSInvocations),以便了解发生了什么。我在文件里看不到这样的东西,但也许有人知道一种方法 谢谢。您正在使用核心数据吗?核心数据提供自动撤消/重做支持。否则,NSUndoManager将有一个空堆栈 我想我要问你的问题是,你为什么要看堆栈?实际上,您没有理由必须查看撤销管理器的堆栈。如果您正在寻找有关如何创建撤消操作并将其推送到堆栈上的建议,这里有一个关于如何执行的示例。关于这个问题也很好。我特别喜欢基于调用的方法。您可以
undoManager
中的撤销对象(NSInvocation
s),以便了解发生了什么。我在文件里看不到这样的东西,但也许有人知道一种方法
谢谢。您正在使用核心数据吗?核心数据提供自动撤消/重做支持。否则,
NSUndoManager
将有一个空堆栈
我想我要问你的问题是,你为什么要看堆栈?实际上,您没有理由必须查看撤销管理器的堆栈。如果您正在寻找有关如何创建撤消操作并将其推送到堆栈上的建议,这里有一个关于如何执行的示例。关于这个问题也很好。我特别喜欢基于调用的方法。您可以使用
class-dump -C NSUndo /System/Library/Frameworks/Foundation.framework/Foundation
了解与撤消相关的类的内部结构。你会发现
NSUndoManager有两个名为_undoStack和_redoStack的实例变量。它的结构非常明显,因此您可以编写一个打印堆栈的小方法。我发现这对于调试与撤销相关的问题非常方便。我正在学习“MacOSX的Cocoa编程”,其中有一章介绍如何使用撤销。它还没有使用核心数据。我想查看堆栈的原因只是想知道事情是如何工作的,以便更好地理解它。我想检查实际发生的事情是否与我认为发生的事情相符。谢谢你的回答。对于任何想知道类转储是什么的人(如我),我在这里找到了它: