在程序运行过程中,通常会打印一些信息来帮助我们跟踪运行定位,但是程序中过多的NSLog在运行过程中是非常耗内存的,然而用户在使用时并需要这些追踪信息。
弊端:
1、消耗手机运行内存;
2、不可避免的泄露一些敏感信息;
//重写NSLog,Debug模式下打印日志和当前行数 #if DEBUG #define NSLog(format, ...) do { \ fprintf(stderr, "<%s : %d> %s\n", \ [[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], \ __LINE__, __func__); \ (NSLog)((format), ##__VA_ARGS__); \ fprintf(stderr, "-------\n"); \ } while (0) #define NSLogRect(rect) NSLog(@"%s x:%.4f, y:%.4f, w:%.4f, h:%.4f", #rect, rect.origin.x, rect.origin.y, rect.size.width, rect.size.height) #define NSLogSize(size) NSLog(@"%s w:%.4f, h:%.4f", #size, size.width, size.height) #define NSLogPoint(point) NSLog(@"%s x:%.4f, y:%.4f", #point, point.x, point.y) #else #define NSLog(FORMAT, ...) nil #define NSLogRect(rect) nil #define NSLogSize(size) nil #define NSLogPoint(point) nil #endif #endif
【注】在使用上述重写方式,要确保如下图片中参数一致
图片中的"DEBUG"与代码中的"DEBUG"统一。