Existe-t-il une méthode que je peux remplacer dans mes classes personnalisées afin que lorsque
NSLog(@"%@", myObject)
est appelé, il imprimera les champs (ou ce que je juge important) de mon objet? Je suppose que je recherche l'équivalent Objective-C de Java toString()
.
objective-c
tostring
nslog
George Armhold
la source
la source
description
propriété est réservée ... et fournira des informations de débogage utiles! Dans ce cas, vous devrez créer votre propre nom de méthode unique.debugDescription
également réservé? Bien que je pense qu'ilDebugDescription
est censé être utilisé par un débogueur comme LLDB.Ajoutez ceci à la
@implementation
de votre classe Photo:la source
Vous pouvez remplacer la méthode de description de NSObject:
Au sujet de la journalisation, je recommande ce billet de blog pour une meilleure connexion dans Objective-C.
la source
Vous pouvez utiliser deux fonctions.
Cela sera affiché lorsque vous mettez votre objet comme, IE un paramètre pour
NSLog
. L'autre fonction de description est:Cela sera appelé lorsque vous le faites
po anInstanceOfYourClass
dans la fenêtre de commande de débogage. Si votre classe n'a pas dedebugDescription
fonction, alors justedescription
sera appelée.Notez que la classe de base a
NSObject
étédescription
implémentée, mais elle est assez simple: elle n'affiche que l'adresse de l'objet. C'est pourquoi je vous recommande d'implémenterdescription
dans n'importe quelle classe dont vous souhaitez obtenir des informations, en particulier si vous utilisez ladescription
méthode dans votre code. Si vous utilisezdescription
dans votre code, je vous suggère de l'implémenterdebugDescription
également, en rendant égalementdebugDescription
plus verbeux.la source
Cela produira les voix disponibles:
la source