Question Quel est l'équivalent Objective-C de "toString ()", à utiliser avec NSLog?


Y at-il une méthode que je peux remplacer dans mes classes personnalisées de sorte que lorsque

      NSLog(@"%@", myObject) 

est appelé, il va imprimer les champs (ou tout ce que je juge important) de mon objet? Je suppose que je suis à la recherche de l'équivalent Objective-C de Java toString().


166
2017-07-09 15:44


origine


Réponses:


C'est le description méthode d'instance, déclarée comme:

- (NSString *)description

Voici un exemple d'implémentation (grâce à grahamparks):

- (NSString *)description {
   return [NSString stringWithFormat: @"Photo: Name=%@ Author=%@", name, author];
}

241
2017-07-09 15:49



Ajoutez ceci à @implementation de votre cours de photo:

- (NSString *)description {
   return [NSString stringWithFormat:@"Photo: Name=%@ Author=%@",name,author];
}

34
2017-07-09 15:57



Vous pouvez remplacer la méthode de description de NSObject:

- (NSString *)description

Au sujet de la journalisation, je recommande cette article de blog pour une meilleure journalisation dans Objective-C.


24
2017-07-09 15:46



Il y a deux fonctions que vous pouvez utiliser.

- (NSString*)description

Ce sera affiché lorsque vous mettez votre objet comme, I.E. un paramètre pour NSLog. L'autre fonction de description est:

- (NSString*)debugDescription

Cela sera appelé quand vous faites po anInstanceOfYourClass dans la fenêtre de commande de débogage. Si votre classe n’a pas de debugDescription fonction, alors juste description sera appelé.

Notez que la classe de base NSObject a description mis en œuvre, mais il est assez nu: il affiche uniquement l'adresse de l'objet. C'est pourquoi je vous recommande de mettre en œuvre description dans n'importe quelle classe, vous voulez obtenir des informations, surtout si vous utilisez le description méthode dans votre code. Si vous utilisez description dans votre code, je vous suggère de mettre en œuvre debugDescription aussi, en faisant aussi debugDescription plus verbeux.


13
2018-01-18 01:15



Cela produira les voix disponibles:

    NSLog((@"speechVoices:%", [[AVSpeechSynthesisVoice speechVoices] description] ));

1
2018-02-12 07:04