2009-10-15 49 views
3

我正在學習撤消操作,我想要一種方法來查看undoManager中的撤消對象(NSInvocation s),以便我可以看到發生了什麼。我在文檔中看不到任何這樣的內容,但也許有人知道一種方式。有沒有辦法查看撤消堆棧?

謝謝。

回答

5

您可以使用

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

,瞭解撤銷相關類的內部結構。你會發現,NSUndoManager有兩個名爲_undoStack和_redoStack的實例變量。它的結構非常明顯,因此您可以編寫一些打印堆棧的方法。我發現調試撤消相關問題非常方便。

+3

感謝您的回答。對於想知道什麼是類轉儲的人,我在這裏找到了它:http://www.codethecode.com/projects/class-dump/ – 2009-10-19 14:58:26

1

您使用的是核心數據嗎?核心數據提供自動撤銷/重做支持。否則,NSUndoManager將有一個空的堆棧。

我想我的問題是,你爲什麼要看看堆棧?在實踐中,真的沒有理由需要查看撤銷管理器的堆棧。如果您正在尋找有關如何創建撤消操作並將其推送到堆棧的建議,請參閱pretty good overview關於如何操作。關於這個問題Apple's documentation也挺好的。我特別喜歡這種基於調用的方法。

+0

我正在閱讀「用於Mac OS X的可可編程」,其中有關於使用撤消的章節。它沒有使用核心數據(還)。 我想看看堆棧的原因只是爲了知道事情是如何工作的,所以我可以更好地理解它。我想檢查實際發生的事情是否符合我的想法。 – 2009-10-16 05:39:43

相關問題