博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
优化的NSLog技巧
阅读量:5903 次
发布时间:2019-06-19

本文共 985 字,大约阅读时间需要 3 分钟。

hot3.png

使用NSLog的一个风险是:它的运行会占用时间和设备资源。

简单而粗暴的解决方案是:在release前,将所有的NSLog注释掉。简单有效,但副作用是:下次你要调试时,又得将NSLog一个个取消注释。

以release模式编译的程序不会用NSLog输出,而以debug模式编译的程序将执行NSLog的全部功能。

解决步骤:

  1. 修改<AppName>-Prefix.pch ,增加以下的宏代码

    [cpp] 

    1. #ifdef DEBUG  

    2. # define DLog(fmt, ...) NSLog((@"[文件名:%s]\n" "[函数名:%s]\n" "[行号:%d] \n" fmt), __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__);  

    3. #else  

    4. # define DLog(...);  

    5. #endif  

  2. 在程序中使用DLog来替换原来的NSLog

    [cpp] 

    1. DLog(@"当前程序目录是:%@", [self applicationDocumentsDirectory ]);  

  3. 修改项目的配置,使得在debug编译的时候,编译DLog的宏,产生详细的日志信息,而release的时候,不产生任何控制台输出

    在Other Linker Flags 中,在debug的时候,加入编译属性 -DEBUG

  4. 这样控制台会显示这样的日志信息

    [cpp] 

    1. 2011-12-27 22:23:53.303 IManager[5449:b603] [文件名:/Users/roamer/Project/ÂõΩÊ≥∞ÂêõÂÆâ/Ëꕉ∏öÈÉ®ÁÆ°ÁêÜiphone/IManager/IManager/AppDelegate.m]  

    2. [函数名:-[AppDelegate application:didFinishLaunchingWithOptions:]]  

    3. [行号:37]   

    4. 当前程序目录是:/Users/roamer/Library/Application Support/iPhone Simulator/4.3.2/Applications/6B0E7B08-5528-468A-B728-0C4580805368/Documents  

转载于:https://my.oschina.net/u/615517/blog/225053

你可能感兴趣的文章
【转】C# Socket编程(5)使用TCP Socket
查看>>
Altium Designer 19 单层显示
查看>>
xml 连表查询(1) --->自关联!模糊查询
查看>>
Python笔记基础篇-Day7
查看>>
LeetCode - Unique Paths
查看>>
shell下批量除去文件名中的空格
查看>>
网站添加icon图标
查看>>
团队项目之分工
查看>>
理解String不可变
查看>>
JAVA核心编程教学
查看>>
ffmpeg截取视频片段
查看>>
Oracle:数据类型对应表
查看>>
使用Charles抓包获取API
查看>>
Fiddler抓包之IOS
查看>>
【09-23】js原型继承学习笔记
查看>>
洛谷P1349 广义斐波那契数列
查看>>
HDU 1166 敌兵布阵
查看>>
本地文件夹选择框
查看>>
BZOJ3676 [Apio2014]回文串
查看>>
BZOJ3160 万径人踪灭
查看>>