2009-04-21 8 views
6

À des fins de débogage, j'aimerais afficher autant d'informations de classe que possible, et éventuellement des informations sur l'exécution (le thread dans lequel la classe/fonction s'exécute, etc.) dans la console.Comment obtenir des informations sur la classe et l'exécution?

Existe-t-il un moyen facile de le faire avec une structure de fonction, variable ou même (externe)?

P.S: J'utilise Cocoa Touch.

+0

bonne question, merci! –

Répondre

8

dans une classe, si vous surchargez la méthode -(NSString *)description, vous pouvez facilement connecter les informations de classe avec NSLog(@"%@", some_object);

est ici un exemple fictif:

-(NSString *)description 
{ 
    return [NSString stringWithFormat:@"%@, %@, %d", 
             [super description], 
             class.object_ivar, 
             class.int_ivar]; 
} 

Vous pouvez utiliser des macros standard C pour obtenir des choses comme le nom , fichier, numéro de ligne etc ... utilisez les classes NSThread pour obtenir des informations sur le thread sur lequel la méthode est appelée.

J'ai posté celui-ci sur twitter. http://twitter.com/kailoa/status/1349928820 N'hésitez pas à me suivre si vous êtes intéressé par plus de petits morceaux comme celui-ci. J'essaie de les mettre régulièrement.

#define METHOD_LOG (NSLog(@"%@ %s\n%@", NSStringFromSelector(_cmd), __FILE__, self)) 
+0

merci, cela fonctionne pour moi. – Jake

+4

'__PRETTY_FUNCTION__' vous donnera la classe et n'importe quelle catégorie ainsi que le nom du sélecteur. Cela fonctionne aussi avec C++ et Obj-C++. Si vous envisagez d'utiliser le débogueur, print-object appelle par défaut '-debugDescription', vous pouvez donc surcharger cela pour fournir une description plus appropriée au débogage que celle renvoyée par' -description'. –

+0

Génial, merci –

Questions connexes