Was ist der Objective-C-Äquivalent für „toString ()“ zur Verwendung mit NSLog?
-
12-09-2019 - |
Frage
Gibt es eine Methode, die ich in meinen benutzerdefinierten Klassen außer Kraft setzen kann, so dass, wenn
NSLog(@"%@", myObject)
aufgerufen wird, werden die Felder drucken (oder was auch immer ich für wichtig erachten) meines Objekt? Ich glaube, ich bin für die Objective-C-Äquivalent von Java toString()
suchen.
Lösung
Es ist die description
Instanzmethode, erklärt wie:
- (NSString *)description
Hier ist ein Beispiel-Implementierung (dank grahamparks):
- (NSString *)description {
return [NSString stringWithFormat: @"Photo: Name=%@ Author=%@", name, author];
}
Andere Tipps
Fügen Sie diese auf dem @implementation
Ihrer Fotoklasse:
- (NSString *)description {
return [NSString stringWithFormat:@"Photo: Name=%@ Author=%@",name,author];
}
Sie können die Beschreibung Methode von NSObject außer Kraft setzen:
- (NSString *)description
Zum Thema Logging ich diesen Blog empfehlen Post für eine bessere Protokollierung in Objective-C.
Es gibt zwei Funktionen, die Sie verwenden können.
- (NSString*)description
Dies wird angezeigt, wenn Sie Ihr Objekt wie gesagt, I.E. ein Parameter für NSLog
. Die andere Beschreibung Funktion:
- (NSString*)debugDescription
Dies wird aufgerufen, wenn Sie im Debug-Befehlsfenster do po anInstanceOfYourClass
. Wenn Ihre Klasse keine debugDescription
Funktion hat, dann nur wird description
aufgerufen werden.
Beachten Sie, dass die Basisklasse NSObject
hat description
implementiert, aber es ist ziemlich nackten Knochen: es nur die Adresse des Objektes anzeigt. Aus diesem Grund empfehle ich, dass Sie description
in jeder Klasse, die Sie Informationen aus, vor allem, wenn Sie die description
Methode in Ihrem Code verwenden erhalten möchten implementieren. Wenn Sie description
in Ihrem Code verwenden Sie, ich schlage vor, Sie debugDescription
auch implementieren, auch debugDescription
ausführlicher zu machen.
Dies wird geben die verfügbaren Stimmen:
NSLog((@"speechVoices:%", [[AVSpeechSynthesisVoice speechVoices] description] ));