有没有办法查看撤消堆栈?

时间:2009-10-15 08:09:04

标签: objective-c cocoa macos undo

我正在学习撤消,我想要一种方法来查看NSInvocation中的撤消对象(undoManager s),这样我就可以看到发生了什么。我在文档中看不到这样的东西,但也许有人知道一种方式。

感谢。

2 个答案:

答案 0 :(得分:5)

您可以使用

class-dump -C NSUndo /System/Library/Frameworks/Foundation.framework/Foundation

了解undo相关类的内部结构。你会发现的 NSUndoManager有两个名为_undoStack和_redoStack的实例变量。它的结构非常明显,所以你可以编写一个打印堆栈的方法。我发现调试撤消相关问题非常方便。

答案 1 :(得分:1)

您使用的是核心数据吗? Core Data提供自动撤消/重做支持。否则,NSUndoManager将有一个空堆栈。

我想我的问题是,你为什么要查看堆栈?在实践中,你真的没有理由去查看撤消管理器的堆栈。如果您正在寻找有关如何创建撤消操作并将其推送到堆栈的建议,请参阅pretty good overview如何执行此操作。关于这个问题的Apple's documentation也很好。我特别喜欢基于调用的方法。