Gibt es eine Methode, die ich in meinen benutzerdefinierten Klassen überschreiben kann, damit wann
NSLog(@"%@", myObject)
heißt, wird es die Felder (oder was auch immer ich für wichtig halte) meines Objekts drucken? Ich denke, ich suche nach dem Objective-C-Äquivalent von Java toString()
.
objective-c
tostring
nslog
George Armhold
quelle
quelle
description
Eigenschaft reserviert ... und bietet nützliche Debugging-Informationen! In diesem Fall müssen Sie Ihren eigenen eindeutigen Methodennamen erstellen.debugDescription
auch reserviert? Obwohl ich denkeDebugDescription
, dass es von einem Debugger wie LLDB verwendet werden soll.Fügen Sie dies zu
@implementation
Ihrer Fotoklasse hinzu:quelle
Sie können die Beschreibungsmethode von NSObject überschreiben:
Zum Thema Protokollierung empfehle ich diesen Blog-Beitrag zur besseren Protokollierung in Objective-C.
quelle
Es gibt zwei Funktionen, die Sie verwenden können.
Dies wird angezeigt, wenn Sie Ihr Objekt als, IE als Parameter für setzen
NSLog
. Die andere Beschreibungsfunktion ist:Dies wird aufgerufen, wenn Sie dies
po anInstanceOfYourClass
im Debug-Befehlsfenster tun . Wenn Ihre Klasse keinedebugDescription
Funktion hat, dann einfachdescription
wird nur aufgerufen.Beachten Sie, dass die Basisklasse
NSObject
zwardescription
implementiert wurde, aber ziemlich einfach ist: Sie zeigt nur die Adresse des Objekts an. Aus diesem Grund empfehle ich, dass Siedescription
in jeder Klasse implementieren , aus der Sie Informationen abrufen möchten, insbesondere wenn Sie diedescription
Methode in Ihrem Code verwenden. Wenn Siedescription
in Ihrem Code verwenden, schlage ich vor, dass Sie auch implementierendebugDescription
und auchdebugDescription
ausführlicher machen.quelle
Dadurch werden die verfügbaren Stimmen ausgegeben:
quelle