objective c - Diferencia entre NSLog y DLog
objective-c cocoa (5)
¿Alguien puede decirme cuál es la diferencia entre NSLog
y DLog
?
Encontré este DLog cuando estaba revisando el código de este proyecto: http://code.google.com/p/iphone-socks-proxy/
Creo que una diferencia importante entre NSLog y DLog es que NSLog retrasa la ejecución del programa (imagínese olvidarse de eliminar todas las llamadas NSLog en producción / publicación), por lo que para fines de depuración debe usarse DLog.
DLog es una alternativa comúnmente utilizada para "depurar NSLog" (solo Google para ello)
Aquí hay un conjunto completo de directivas de definición de registro (incluyendo ULog , una función de registro basada en UIAlertView )
// 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
Simplemente colóquelos en su archivo de encabezado de precompilación (.pch).
(fuente: http://overbythere.co.uk/blog/2012/01/alternatives-nslog )
DLog es una macro destinada a condicionalizar el comportamiento de NSLog()
en versiones de depuración y liberación. Para versiones de lanzamiento, no imprimirá nada. NSLog()
está destinado a imprimir cadenas de formato a la consola.
Aquí está su definición para referencia:
#ifdef DEBUG
# define DLog(...) NSLog(__VA_ARGS__)
#else
# define DLog(...) /* */
#endif
#define ALog(...) NSLog(__VA_ARGS__)
NSLog
es una función que está incorporada en el marco de la Fundación que ofrece Apple. Nunca he oído hablar de DLog
, así que supongo que es una función no estándar implementada por el código que estás viendo.
Hola, debajo del macro cmd para el formato de archivo de reemplazo NSLOG y también debajo mencioné undef Macro y
Definición:
#define _LOG_TO_CONSOLE_ //#undef _LOG_TO_CONSOLE_
#ifdef _LOG_TO_CONSOLE_
#define DLog(format, ...) NSLog(format, ##__VA_ARGS__)
#else
#define DLog(format, ...)
#endif