Qu'est-ce que l'Objective-C équivalent de “toString()”, pour une utilisation avec NSLog?
Est-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 de ce que je juge important) de mon objet? Je suppose que je suis à la recherche de l'Objective-C équivalent de Java toString()
.
Vous devez vous connecter pour publier un commentaire.
C'est le
description
méthode d'instance, a déclaré que:Voici un exemple de mise en œuvre (grâce à grahamparks):
description
propriété est réservé ...et vous fournir des informations de débogage utiles! Dans ce cas, vous aurez besoin de venir avec votre propre nom de la méthode.debugDescription
également réservé? Bien que je pense deDebugDescription
est censé être utilisé par un débogueur comme LLDB.Ajouter à la
@implementation
de votre Photo de classe:Vous pouvez remplacer la méthode de description de NSObject:
Sur le sujet de l'exploitation forestière je recommande ce post de blog pour mieux la journalisation en Objective-C.
Il existe deux fonctions que vous pouvez utiliser.
S'affichent lorsque vous mettez votre objet, I. E. un paramètre pour
NSLog
. Autre description de la fonction est:Ce sera appelée lorsque vous ne
po anInstanceOfYourClass
dans la fenêtre de commande de débogage. Si votre classe n'a pas unedebugDescription
fonction, puis il suffit dedescription
sera appelée.Noter que la classe de base
NSObject
n'ontdescription
mis en œuvre, mais il est assez bare-bones: il n'affiche que l'adresse de l'objet. C'est pourquoi je vous recommande de mettre en œuvredescription
dans n'importe quelle catégorie vous souhaitez obtenir des informations, surtout si vous utilisez ledescription
méthode dans votre code. Si vous n'utilisezdescription
dans votre code, je vous suggère de mettre en œuvredebugDescription
ainsi, en faisant aussidebugDescription
plus verbeux.Ce sera la sortie de la voix disponibles: