Las macros de preprocesador son realmente excelentes para la depuración. NSLog () no tiene nada de malo, pero es sencillo definir su propia función de registro con una mejor funcionalidad. Este es el que uso, incluye el nombre del archivo y el número de línea para que sea más fácil rastrear las declaraciones de registro.
#define DEBUG_MODE
#ifdef DEBUG_MODE
#define DebugLog( s, ... ) NSLog( @"<%p %@:(%d)> %@", self, [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] )
#else
#define DebugLog( s, ... )
#endif
Me resultó más fácil poner esta declaración completa en el encabezado del prefijo en lugar de su propio archivo. Si lo desea, puede crear un sistema de registro más complicado haciendo que DebugLog interactúe con los objetos normales de Objective-C. Por ejemplo, podría tener una clase de registro que escriba en su propio archivo de registro (o base de datos) e incluya un argumento de 'prioridad' que podría establecer en tiempo de ejecución, por lo que los mensajes de depuración no se muestran en su versión de lanzamiento, pero los mensajes de error son ( Si hiciera esto, podría crear DebugLog (), WarningLog (), etc.).
Ah, y tenga en cuenta que #define DEBUG_MODE
puede reutilizarse en diferentes lugares de su aplicación. Por ejemplo, en mi aplicación lo uso para deshabilitar las comprobaciones de clave de licencia y solo permitir que la aplicación se ejecute si es anterior a una fecha determinada. Esto me permite distribuir una copia beta completamente funcional por tiempo limitado con un mínimo esfuerzo de mi parte.