iOS开发 替换NSLog打印设置

原创 2015年07月10日 08:44:18

在XCode做开发调试时往往需要打印一些调试信息做debug用,大家知道当打印信息的地方多了之后在模拟器上跑可能不会有什么问题,因为模拟器用的是电脑的硬件但是当应用跑在设备上时这些输出语句会在很大程度上影响应用的性能,针对这种问题可以写一些宏来控制这些调试信息的输出。

在release版本禁止输出NSLog内容
因为NSLog的输出还是比较消耗系统资源的,而且输出的数据也可能会暴露出App里的保密数据,所以发布正式版时需要把这些输出全部屏蔽掉。
我们可以在发布版本前先把所有NSLog语句注释掉,等以后要调试时,再取消这些注释,这实在是一件无趣而耗时的事!还好,还有更优雅的解决方法,就是在项目的prefix.pch文件里加入下面一段代码,加入后,NSLog就只在Debug下有输出,Release下不输出了。
如何实现:
在-Prefix.pch(pch全称是“precompiled header”,也就是预编译头文件,该文件里存放的工程中一些不常被修改的代码,比如常用的框架头文件,这样做的目的提高编译器编译速度。我们知道当我们修改一个工程中某个文件代码时候,编译器并不是重新编译所有所有文件,而是编译改动过文件的,假如pch中某个文件修改了,那么pch整个文件里包含的的其他文件也会重新编译一次,这样就会消耗大量时间,所以它里面添加的文件最好是是很少变动或不变动的头文件或者是预编译的代码片段;)文件中添加

#ifdef DEBUG

#   define DLog(fmt, ...) {NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);}
#   define ELog(err) {if(err) DLog(@"%@", err)}
#else
#   define DLog(...)
#   define ELog(err)

上段代码的意思就是用DLog替换NSLog;

iOS数据类型简介及NSLog打印输出

1. 数据类型简介及输出 (1) 数据类型简介  数据类型简介 : Object - C 数据类型 分为 基本数据类型, 构造类型 和 指针类型; -- 基本数据类型 : 整型...
  • tanhj
  • tanhj
  • 2017年05月19日 13:27
  • 3522

在ios iphone编程中使用封装的NSLog来打印调试信息

使用NSLog的一个风险是:它的运行会占用时间和设备资源。 简单而粗暴的解决方案是:在release前,将所有的NSLog注释掉。简单有效,但副作用是:下次你要调试时,又得将NSLog一个个取消...
  • focusjava
  • focusjava
  • 2013年06月18日 10:37
  • 1396

xcode设置全局宏,修改NSLog打印格式

问题抛出: 1、系统原始的NSLog打印输出格式,包含很多不必要的信息,例如下图,我们能否修改NSLog的输出格式呢? 2、如果可以修改NSLog,如何使之在整个工程全局生效? ...
  • cugwuhan2014
  • cugwuhan2014
  • 2016年08月30日 16:42
  • 539

工程里面NSLog的处理方法

简单介绍以下几个宏: 1) __VA_ARGS__ 是一个可变参数的宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持)。宏前面加上##的作用在于,当可变参...
  • maiwc
  • maiwc
  • 2016年06月08日 15:44
  • 511

iOS开发:NSLog使用技巧

前提:在XCode做开发调试时往往需要打印一些调试信息做debug用,大家知道当打印信息的地方多了之后在模拟器上跑可能不会有什么问题,因为模拟器用的是电脑的硬件但是当应用跑在设备上时这些输出语句会在很...
  • hmxiao_1983
  • hmxiao_1983
  • 2014年01月02日 17:06
  • 887

iOS开发中NSLog的替换

在Objective-C中,NSLog相当于C语言中的printf,常用于输出。 替代开发中Debug时的NSLog,release模式编译的程序不会用NSLog输出,而以debug模式编译的程序将...
  • Cituses
  • Cituses
  • 2016年08月08日 16:10
  • 418

NSLog的替换

放到yourprojectname-Prefix.pch文件里面 这个东西还不错。 //DLog will output like NSLog only when the DEBUG v...
  • xiaohao2008
  • xiaohao2008
  • 2013年04月02日 09:23
  • 562

iOS开发 替换NSLog打印设置

在XCode做开发调试时往往需要打印一些调试信息做debug用,大家知道当打印信息的地方多了之后在模拟器上跑可能不会有什么问题,因为模拟器用的是电脑的硬件但是当应用跑在设备上时这些输出语句会在很大程度...
  • tubiebutu
  • tubiebutu
  • 2015年07月10日 08:44
  • 1028

IOS 字符串替换

给个例子 NSString *str = @"Hello world!"; str =[str stringByReplacingOccurrencesOfString:@"world"...
  • hengshujiyi
  • hengshujiyi
  • 2013年11月22日 16:55
  • 1442

iOS开发-NSLog不打印设置

前提:在XCode做开发调试时往往需要打印一些调试信息做debug用,大家知道当打印信息的地方多了之后在模拟器上跑可能不会有什么问题,因为模拟器用的是电脑的硬件但是当应用跑在设备上时这些输出语句会在很...
  • hitwhylz
  • hitwhylz
  • 2014年01月23日 17:16
  • 3521
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS开发 替换NSLog打印设置
举报原因:
原因补充:

(最多只允许输入30个字)