我正在学习撤销操作,并希望能够查看
谢谢。
undoManager
中的撤销对象(NSInvocation
),以便了解当前的操作。我在文档中没有找到这样的内容,但也许有人知道如何实现。谢谢。
undoManager
中的撤销对象(NSInvocation
),以便了解当前的操作。我在文档中没有找到这样的内容,但也许有人知道如何实现。您可以使用
class-dump -C NSUndo /System/Library/Frameworks/Foundation.framework/Foundation
了解撤销相关类的内部结构,你会发现NSUndoManager有两个实例变量名为_undoStack和_redoStack。它的结构非常明显,因此你可以编写一个小方法来打印堆栈。我发现这对于调试与撤销相关的问题非常有用。
_undoStack
私有属性:let undoStack = object_getIvar(undoManager, class_getInstanceVariable(UndoManager.self, "_undoStack")!)
print(undostack.debugDescription)
基于这个代码片段。