2009-10-15 3 views
3

Je suis en train d'apprendre à annuler, et j'aimerais trouver un moyen de jeter un coup d'œil dans les objets d'annulation (NSInvocation s) dans le undoManager afin que je puisse voir ce qui se passe. Je ne pouvais pas voir quelque chose comme ça dans les docs, mais peut-être que quelqu'un connaît un moyen.Existe-t-il un moyen d'afficher la pile d'annulation?

Merci.

Répondre

5

Vous pouvez utiliser

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

pour en savoir plus sur la structure interne des classes liées à l'annulation. Vous trouverez que le NSUndoManager a deux variables d'instance nommées _undoStack et _redoStack. C'est assez évident comment c'est structuré, donc vous pouvez écrire une petite méthode d'impression de la pile. J'ai trouvé cela très pratique pour déboguer les problèmes liés à l'annulation.

+3

Merci pour la réponse. Pour quelqu'un (comme moi) qui se demande ce qu'est la classe-vidage, je l'ai trouvé ici: http://www.codethecode.com/projects/class-dump/ –

1

Utilisez-vous des données de base? Core Data fournit un support automatique d'annulation/rétablissement. Sinon, le NSUndoManager aura une pile vide.

Je suppose que ma question serait, pourquoi voulez-vous regarder la pile? En pratique, il n'y a vraiment aucune raison pour laquelle vous devriez regarder la pile du gestionnaire d'annulation. Si vous recherchez des conseils sur la façon de créer des actions d'annulation et de les pousser sur la pile, voici un pretty good overview sur la façon de le faire. Apple's documentation sur le sujet est également très bon. Je suis particulièrement friand de la méthode basée sur l'invocation.

+0

Je passe par "Cocoa Programming pour Mac OS X" qui contient un chapitre sur l'utilisation de l'annulation. Il n'utilise pas (encore) les données de base. La raison pour laquelle je veux regarder la pile est juste de savoir comment les choses fonctionnent afin que je puisse mieux le comprendre. Je veux vérifier que ce qui se passe correspond à ce que je pense. –

Questions connexes