web-dev-qa-db-fra.com

Différence entre NSLog et DLog

Quelqu'un peut-il me dire quelle est la différence entre NSLog et DLog?

J'ai découvert ce DLog lorsque je cherchais le code de ce projet: http://code.google.com/p/iphone-socks-proxy/

22
slonkar

NSLog est une fonction intégrée au framework Foundation fourni par Apple. Je n'ai jamais entendu parler de DLog, alors je suppose que c'est une fonction non standard implémentée par le code que vous consultez.

9
Kurt Revis

DLog est une alternative "Debug NSLog" couramment utilisée (juste Google pour ça)

Voici un ensemble complet de directives Log #define (y compris ULog , a UIAlertView fonction de journalisation)

// DLog will output like NSLog only when the DEBUG variable is set

#ifdef DEBUG
#   define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
#   define DLog(...)
#endif

// ALog will always output like NSLog

#define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);

// ULog will show the UIAlertView only when the DEBUG variable is set 

#ifdef DEBUG
#   define ULog(fmt, ...)  { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"%s\n [Line %d] ", __PRETTY_FUNCTION__, __LINE__] message:[NSString stringWithFormat:fmt, ##__VA_ARGS__]  delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [alert show]; }
#else
#   define ULog(...)
#endif

Il suffit de les mettre dans votre fichier d’en-tête de précompilation (.pch).

(source: http://overbythere.co.uk/blog/2012/01/alternatives-nslog )

68
Pascal

DLog est une macro destinée à conditionner le comportement de NSLog() dans les versions de débogage et de publication. Pour les versions release, il n’imprimera rien. NSLog() est destiné à imprimer des chaînes de format sur la console.

Voici sa définition pour référence:

#ifdef DEBUG
#    define DLog(...) NSLog(__VA_ARGS__)
#else
#    define DLog(...) /* */
#endif
#define ALog(...) NSLog(__VA_ARGS__)
13
CodaFi

Bonjour, Au-dessous de la macro cmd pour le format de fichier de remplacement NSLOG, ainsi que sous la macro undef ainsi que

Définition:

#define _LOG_TO_CONSOLE_ //#undef _LOG_TO_CONSOLE_
#ifdef _LOG_TO_CONSOLE_
#define DLog(format, ...) NSLog(format, ##__VA_ARGS__)
#else
#define DLog(format, ...)
#endif
8
sathish

Je pense qu'une différence importante entre NSLog et DLog est que NSLog accuse un retard dans l'exécution du programme (imaginez que vous oubliez de supprimer tous les appels NSLog dans la production/publication). Par conséquent, DLog devrait être utilisé.

0
Nora Madjarova