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.

War es hilfreich?

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] ));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top