NSObject-Beschreibung und benutzerdefinierte Zusammenfassungen in Xcode

8

Ich überschreibe -(NSString*)description des Objekts, aber Xcode zeigt immer error: summary string parsing error im Zusammenfassungsfeld in der Variablenansicht an.

Meine aktuelle Implementierung ist die folgende:

%Vor%

Wenn ich po objectName in die Konsole eintippe, zeigt LLDB eine feine Ausgabe wie erwartet, Xcode und Befehl p objectName zeigen jedoch immer einen Fehler an. Welches ist das richtige Debug-Beschreibungsformat, um das Zusammenfassungsfeld zu bearbeiten? Es ist zu beachten, dass die Ausgabe des Befehls "p" mit einer zusammenfassenden Nachricht übereinstimmt, die Sie in Xcode für Instanzen von Foundation-Klassen sehen.

Aktualisierung:

Soweit ich von "WWDC 2012 Session Debugging in Xcode" sehen kann, können benutzerdefinierte Zusammenfassungen nur mit benutzerdefiniertem Python-Skript implementiert werden. Die Methoden -(NSString*)description oder -(NSString*)debugDescription sind ohnehin nicht mit Übersichtsnachrichten verbunden. Ich dachte, dass sie sind, weil ich einen Fehler angezeigt bekommen habe, aber es scheint, dass es eine Standardnachricht für Klassen ist, die ihre eigenen Formatierer nicht haben.

    
Andy 06.08.2013, 21:12
quelle

1 Antwort

2

Ich würde mindestens vorschlagen:

%Vor%

So dass Sie den NSObject Standard nicht manuell replizieren und dadurch nicht standardmäßiges Verhalten blockieren, das Ihre Oberklasse möglicherweise eingeschlossen hat.

Darüber hinaus ist "summary string analysing error" ein lldb-Fehler. Es wird nur vom Debugger gemeldet. Pro Dokumentation , po ist korrekt für Objective-C Objekte; p ist für C- oder C ++ - Objekte. Sie müssen diesen Fehler also nicht beachten - im Wesentlichen sagen Sie nur, dass Sie den falschen lldb-Befehl verwendet haben.

BEARBEITEN: Für was es wert ist, ist die von CFArray verwendete Methode Open Source und sieht so aus:

%Vor%

Wie bei den anderen obigen Kommentaren bin ich bereit zu riskieren, dass die Antwort lautet: Der Debugger von Xcode ist in keiner Hinsicht intelligent und definitiv nicht schlau genug, um die richtigen po Mittel zu verwenden, um ein Objective- C Beschreibung; Wenn Ihr Objekt ein nicht-abgelenktes Objective-C-Objekt ist, wird der Debugger es nicht herausfinden können.

    
Tommy 06.08.2013 21:57
quelle

Tags und Links