重写系统NSLog ------宏定义

阅读更多

       在程序运行过程中,通常会打印一些信息来帮助我们跟踪运行定位,但是程序中过多的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"统一。

 

  • 重写系统NSLog ------宏定义_第1张图片
  • 大小: 26.8 KB
  • 查看图片附件

你可能感兴趣的:(重写系统NSLog ------宏定义)