29 votes

Xcode LLDB : échec de l'impression des déclarations - NSUndoManager

J'ai un point d'arrêt et je veux imprimer la vue secondaire de mon UITextField. Je tape po myTextField.superview mais je reçois l'erreur suivante :

error: instance method 'undoManager' has incompatible result types in different translation units ('id' vs. 'NSUndoManager *')
note: instance method 'undoManager' also declared here
error: 1 errors parsing expression

Qu'est-ce que cela signifie et comment puis-je imprimer ma vue d'ensemble ? J'ai trouvé un lien qui fournit une solution de contournement bizarre dans le code : http://openradar.io/15890965 mais j'aimerais une meilleure solution.

1voto

bhargavg Points 1116

La solution que j'utilise pour éviter cette erreur lors du débogage est la suivante tout est explicitement coulé .

Dans votre cas, je ferais

po [(UITextField *)myTextField superView]

1voto

pbuchheit Points 189

Avez-vous des méthodes d'accès personnalisées pour "myTextField" ? J'ai vu ce même problème un certain nombre de fois et il est généralement causé par le po qui essaie d'imprimer une propriété pour un objet qui est initialisé la première fois que son getter est appelé. Par exemple, si j'essaie d'exécuter 'po self.imageView.contentMode' sur un UITableViewCell, j'obtiens la même erreur. Essayez de déplacer votre point d'arrêt à un endroit du code où vous savez que 'myTextField' a été entièrement initialisé.

0voto

Fait myTextField vraiment à l'égard d'un UITextField ? C'est l'une des raisons pour lesquelles cette erreur apparaît. Par exemple, le code suivant se compile, et si je place un point d'arrêt sur la troisième ligne, je peux saisir po b.superview pour reproduire l'erreur que vous avez constatée.

NSString *a = @"not a view";
UITextField *b = (UITextField *)a;
UIView *view = b.superview;

Essayez de taper po [myTextField class] à l'invite de votre LLDB pour voir s'il s'agit bien d'un UITextField . Il peut s'agir d'un autre type d'objet, ou nil .

0voto

Kyle Robson Points 606

J'ai obtenu cette erreur dans Xcode 5.1.1 et je l'ai corrigée en quittant Xcode 5.1.1 et en essayant Xcode 6. Redémarrer Xcode 5.1.1 pour Xcode 5.1.1 peut également fonctionner pour certaines personnes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X