¿Qué encontrarás en este post?
ToggleAlternativas a NSLog: no hacen falta
NSLog es una función muy usada pero a menudo poco entendida. Es muy común, cuando alguien quiere hacer un log a un fichero, crearse dos macros: una que usa fprintf() y otra que no hace nada. Se decide cual usar mediante una constante de depuración, de tal forma que en la versión de release no se consumen recursos haciendo un log (NSLog tiene un coste sustancial).#ifdef DEBUG #define NSLog(FORMAT, ...) fprintf(stderr,"%s\n", [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]); #else #define NSLog(...) {} #endifLas tres cosas son una abominación sobre otra.
[NSAbominationStack: pushYetAnotherAbomination]
Vayamos por partes:- No uses macros en C. No están bajo el control del compilador y terminarán creando bugs y haciendo ilegible el código.
- No uses una macro para llamar de forma condicional a NSLog. Aprende a usar las acciones de los puntos de interrupción: tu código estará más limpio y tendrá mejor rendimiento.
- No uses fprintf para escribir en un fichero. Primero porque hay opciones mejores con Cocoa y segundo porque es absolutamente innecesario.