Quiero habilitar NSLog cuando estoy en depuración y desactivarlo de lo contrario. Una cosa es muy simple:Habilitar y deshabilitar NSLog en el modo DEPURAR
#ifdef DEBUG
NSLog(@"My log");
#endif
Pero todo esto #ifdef
#endif
y es borring ... :(Así que intento otra cosa: (.pch es buen lugar para ponerlo)
#ifdef DEBUG
# define NSLog(text) NSLog(text);
#else
# define NSLog(text)
#endif
Este trabajar muy bien (no es recursivo). Pero el problema es que NSLog tiene argumentos infinitos.
void NSLog(NSString *format, ...)
Cómo resuelvo esto funcione en modo preprocesador?
- Editar -
Este código hacen su mejor NSLog:
#ifdef DEBUG
#define NSLog(FORMAT, ...) fprintf(stderr,"%s\n", [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
#else
#define NSLog(...)
#endif
+1 por buena pregunta. Un componente reutilizable completo sobre este tema en http://mobile.tutsplus.com/tutorials/iphone/customize-nslog-for-easier-debugging/ –
. Sigo la guía en el enlace. Pero obtuve el siguiente error de compilación: ** Símbolos indefinidos para la arquitectura x86_64: ld: símbolos no encontrados para la arquitectura x86_64 clang: error: el comando del enlazador falló con el código de salida 1 (use -v para ver la invocación) ** Por favor, ayuda @MahbuburRAaman – Gon
@Gon, Error ** Símbolos no definidos para la arquitectura x86_64: ld: símbolo (s) que no se encuentran para la arquitectura x86_64 ** aparece por varias razones. Por ejemplo, para la biblioteca faltante u otros casos, eche un vistazo al siguiente recurso SO http://stackoverflow.com/questions/18408531/xcode-build-failure-undefined-symbols-for-architecture-x86-64, http: //stackoverflow.com/questions/11996227/undefined-symbols-for-architecture-x86-64-in-objective-c, http://stackoverflow.com/questions/6231368/objective-c-undefined-symbol-compilation- error. –