Como programador más nuevo, descubrí la magia de NSlog
y la utilizo en mi código. Ha sido extremadamente útil (junto con NSZombieEnabled
) en la depuración.¿Hay un costo para usar NSLog liberalmente?
Puedo ver un golpe de rendimiento definido en el simulador mientras imprime todo esto. No creo que vea ningún golpe así en los dispositivos, pero no estoy seguro.
Entonces, ¿cuesta algo dejar todo NSLogs
? ¿Está usando más memoria en el dispositivo? ¿O el compilador simplemente los ignora, al igual que los comentarios cuando compilo para un dispositivo?
EDIT:
Esto es lo que he implementado, por la sugerencia de rano.
En mi archivo App_Prefix.pch
, añadí:
// DLog is almost a drop-in replacement for NSLog
// DLog();
// DLog(@"here");
// DLog(@"value: %d", x);
// Unfortunately this doesn't work DLog(aStringVariable); you have to do this instead DLog(@"%@", aStringVariable);
#ifdef DEBUG
# define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
# define DLog(...)
#endif
// ALog always displays output regardless of the DEBUG setting
#define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
Y luego en mi Project Info
inspector, para la configuración Debug
, bajo el encabezado GCC 4.2 - Preprocessing,
Agregué el valor DEBUG
a la entrada superior llamada, Preprocessor Macros.
Funciona como un encanto - DLog
salidas cuando construyo una versión Debug
y ALog
siempre salidas.
Ver también [¿Es cierto que no se debe usar NSLog() en el código de producción?] (Http://stackoverflow.com/questions/300673/is-it-true-that-one-should-not-use -nslog-on-production-code) –