2011-09-18 11 views

Respuesta

10

Sí. Así que defino esto en mi archivo pch.

#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__); 

En lugar de utilizar NSLog, utilizo DLog y ALog.

(nota o de los derechos de autor:. Tengo este código hace mucho mucho tiempo desde algunos post otro SO, que no me acuerdo pegar de nuevo desde mi biblioteca fragmento)

+0

Sí, por NSLogs pretende dejar en el código para la depuración, se debe definir macros que permiten a los "depuración" para ser compilados a cabo. Algunos, por supuesto, siempre deben registrarse, por lo que usan una macro diferente. Agregar '__PRETTY_FUNCTION__' y' __LINE__' reduce la necesidad de identificar explícitamente dónde se encuentra en el código. (No hay nada más inútil que un mensaje "He tenido un error" sin una pista de dónde fue enviado). –

+0

Este parece ser el origen de esta idea, para aquellos que sienten curiosidad por conocer su evolución: http: //iphoneincubator.com/blog/debugging/the-evolution-of-a-replacement-for-nslog – benvolioT

2

Sí, ralentiza el rendimiento, especialmente si se supone que la función lleva muy poco tiempo, el NSLog (que es un proceso de E/S) hará que tarde más tiempo de lo esperado.

7

Otra solución fácil 'undefine' NSLog

en

archivo .pch:

#ifndef DEBUG 
#define NSLog(...) /* */ 
#endif 
Cuestiones relacionadas