美文网首页ios
在Release版本禁用NSLog函数

在Release版本禁用NSLog函数

作者: 水止云起 | 来源:发表于2015-11-27 13:23 被阅读380次

在Xcode中开发时,往往需要利用NSLog()函数来打印一些调试信息。打印这些调试信息会消耗一定的系统资源,因为模拟器使用的是电脑的硬件,所以在运行应用时不会有什么影响,但如果在真实的移动设备上也打印大量的调试信息,会在很大程度上影响应用的性能。另外输出的信息还有可能暴露应用的一些保密数据。所以发布应用的正式版时,应屏蔽调试信息。
针对以上问题,我们可以在预编译文件Prefix.pch中写一些宏来控制

#ifdef DEBUG
//__VA_ARGS__代表可变参数宏
#define DebugLog(format, ...) NSLog(format, ##__VA_ARGS__)
#else
#define DebugLog(format, ...)
#endif

这样,当只想在Debug版本中记录调试信息,可以使用DebugLog()函数。如果想在所有版本中都记录调试信息可以直接使用NSLog()函数。
PS:如果想全局替换NSLog()函数,可以在终端输入命令$ sed -i ".bak" 's/NSLog/DebugLog/' *.m,另外也可以直接在Xcode中全局替换。

如果不想使用NSLog输出的基本信息,也可以自定义输出的基本信息及其格式

// 获取系统当前毫秒级时间
#define logTime ({\
                    struct timeb currentTime;\
                    ftime(&currentTime);\
                    char secondLevelStr[9];\
                    strftime(secondLevelStr, 9, "%H:%M:%S", localtime(&currentTime.time));\
                    char millisecondLevelStr[13];\
                    sprintf(millisecondLevelStr, "%s.%03d", secondLevelStr, currentTime.millitm);\
                    millisecondLevelStr;\
                })

#ifdef DEBUG
#define DebugLog(format, ...) fprintf(stderr, "%s %s[%d] %s\n", logTime, [[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, [[NSString stringWithFormat:format, ##__VA_ARGS__] UTF8String])
#else
#define DebugLog(format, ...)
#endif

相关文章

  • 在Release版本禁用NSLog函数

    在Xcode中开发时,往往需要利用NSLog()函数来打印一些调试信息。打印这些调试信息会消耗一定的系统资源,因为...

  • windows下 c++ 崩溃时,生成dump

    在程序启动时注册处理函数 注意 Release版本,需要配置: c/c++>优化>优化 选择 已禁用/Od c/...

  • iOS开发中常用的宏

    /** 在Release版本禁止输出NSLog内容 因为NSLog的输出还是比较消耗系统资源的,而且输出的数据也可...

  • Xcode 调试之 Breakpoint

    NSLog 应该是最基本的调试方法,但是 NSLog 也有一些问题,比如 需要提前设置宏,在 release 版本...

  • Delphi计算程序运行时间

    一、GetTickCount()函数 1、Release版本计时 For Release configuratio...

  • iOS宏关闭NSLog输出

    Release版本关闭Log输出 输出更详细的调试信息 参考文章:iOS开发-使用宏自定义输出(NSLog)

  • 安装laravel必须使用的函数

    以下函数不能禁用 宝塔面板修改composer默认PHP版本

  • 消除代码中的NSLog...

    工程调试的过程中,不免会有好多的NSLog, 在release状态怎么消除NSLog? 其实, 只需用宏定义即可,...

  • iOS NSLog在项目release版本中的使用注意

    在iOS开发过程中,我们经常要用到NSLog来打印一些调试信息,而且一般是习惯性的大量使用,在模拟器上运行可能没有...

  • 如何屏蔽NSLog

    在iOS开发中,大家经常会使用NSLog跟踪应用中可能产生的问题。但是NSLog会消耗资源,所以在Release的...

网友评论

    本文标题:在Release版本禁用NSLog函数

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