NSLog重写--宏定义

作者: iOneWay | 来源:发表于2016-05-22 21:38 被阅读2515次

在运行应用时候,我们可能会加入一些打印信息来帮助我们跟踪应用的运行信息。可是过多的NSLog是非常耗费性能的,在Debug模式下我们需要打印这些信息以供找出bug,但是在用户使用时是不需要打印太多信息的,这里有两个原因:一方面是因为耗费手机性能;另一方面会泄漏一些敏感信息。所以为了解决以上问题我门需要做以下修正:

1,屏蔽Release模式下的打印信息
2, 增强NSLog的功能,得到更多的有用信息

如下代码:

//重写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

在使用以上代码前,请确保参数设置正确

EC6CCD.png

这里的DEBUG即为以上代码中的条件"DEBUG", 两者必须一致。

使用范例及效果:

NSLog(@"self.window = %@", self.window);
NSLog(@"self.window.rootViewController = %@", self.window.rootViewController);
222.png

打印出了文件名,行号,函数名称等重要信息。并以"------"作为分隔符。

相关文章

  • NSLog重写--宏定义

    在运行应用时候,我们可能会加入一些打印信息来帮助我们跟踪应用的运行信息。可是过多的NSLog是非常耗费性能的,在D...

  • IOS NSLog宏定义

    IOS NSLog宏定义 标签(空格分隔): IOS IOS NSLog宏定义 宏定义NSLog方法,不用加";"...

  • (转)NSLog重写--宏定义

    文/iOneWay(简书作者)原文链接:http://www.jianshu.com/p/acbe5e5c59e4...

  • 0822- iOS常用宏定义

    [123](file://) 宏定义原文链接 全局打印 打印所在方法名与行数 重写NSLog 输出所在方法与行数 ...

  • NSLog宏定义

  • NSLog宏定义

    项目中的控制面板会出现很多无用的信息,如下图: 用下图的方法可以实现无用的信息不显示: 勾选Environment...

  • NSlog宏定义

    1. VA_ARGS 是一个可变参数的宏,很少人知道这个宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有...

  • NSLog(...) 宏定义

  • NSLog 打印全部信息

    NSLog 打印全部信息 宏定义 NSLog 打印中文 先写一个转义方法 NSLog 打印中文使用 可以在...

  • 重写 NSLog

    重写NSLog 使用上述宏,需要build settings的macro中DEBUG设置正确。 常用输出:

网友评论

    本文标题:NSLog重写--宏定义

    本文链接:https://www.haomeiwen.com/subject/gkrnrttx.html