Il n'y a pas un moyen de introspecte automatiquement les valeurs transmises à une méthode . Même dans les builds DEBUG (où l'optimiseur est à l'écart), toute tentative d'écriture de code pour introspecter dit que iVars va être incroyablement complexe (vous devrez plonger dans les tables de symboles, extraire les offsets, etc., puis essayer et trouver les arguments qui ont probablement été détruits dans la tentative de les attraper).
Donc, non, pas moyen de vraiment automatiser ça. En général, cependant, un tel mécanisme de journalisation générerait une quantité de sortie tellement énorme que vous feriez mieux de créer (potentiellement uniquement en débogage) une journalisation configurable et parfaitement adaptée à votre application.
Vous pouvez passer des arguments comme ceci (grâce à @hoha pour la version plus simple).
#import <Foundation/Foundation.h>
#define FooLog(fmt, ...) NSLog(@"(%s): %@", __PRETTY_FUNCTION__, ## __VA_ARGS__)
@interface Bob:NSObject
@end
@implementation Bob
- (void)yourUncle
{
FooLog(@"%@", self);
}
@end
int main(int argc, char *argv[]) {
@autoreleasepool {
NSString *w = @"World";
FooLog(@"Hello, %@!", w);
[[Bob new] yourUncle];
}
}
Sortie:
2013-09-02 10:51:49.447 Untitled[60967:507] (int main(int, char **)): Hello, World!
2013-09-02 10:51:49.453 Untitled[60967:507] (-[Bob yourUncle]): <Bob: 0x7fde8840a490>
Bûcheron cadre de l'exploitation forestière est le cadre d'un tiers droit ??? Je ne veux pas utiliser un framework tiers – user1913341
Oui, mais Lumberjack est une bibliothèque open source pour la journalisation et vous pouvez utiliser des codes à partir de ceci dans vos propres programmes.
sinon vous pouvez suivre ce lien pour la connexion personnalisée [lien ici] (http://weakreference.wordpress.com/2011/06/22/overriding-nslog-on-ios/) –
Merci .. Je ne sais pas si la bibliothèque open source est acceptée dans mon application. J'ai créé a spécifié dans ce lien, mais je veux enregistrer mes valeurs de paramètres comme je l'ai mentionné plus tôt dans ma question. – user1913341