Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 有没有办法查看撤消堆栈?_Objective C_Cocoa_Macos_Undo - Fatal编程技术网

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编程”,其中有一章介绍如何使用撤销。它还没有使用核心数据。我想查看堆栈的原因只是想知道事情是如何工作的,以便更好地理解它。我想检查实际发生的事情是否与我认为发生的事情相符。谢谢你的回答。对于任何想知道类转储是什么的人(如我),我在这里找到了它: