iOS NSlog的使用以及pch的使用

IOS开发笔记(11)IOS开发之NSLog使用技巧

在xcode6.01以前是有prefix.pch文件的,Xcode6.01以后就没有了,但是可以自己去创建!

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

在release版本禁止输出NSLog内容

因为NSLog的输出还是比较消耗系统资源的,而且输出的数据也可能会暴露出App里的保密数据,所以发布正式版时需要把这些输出全部屏蔽掉。

我们可以在发布版本前先把所有NSLog语句注释掉,等以后要调试时,再取消这些注释,这实在是一件无趣而耗时的事!还好,还有更优雅的解决方法,就是在项目的prefix.pch文件里加入下面一段代码,加入后,NSLog就只在Debug下有输出,Release下不输出了。

如何实现:

在-Prefix.pch(pch全称是“precompiled header”,也就是预编译头文件,该文件里存放的工程中一些不常被修改的代码,比如常用的框架头文件,这样做的目的提高编译器编译速度。我们知道当我们修改一个工程中某个文件代码时候,编译器并不是重新编译所有所有文件,而是编译改动过文件的,假如pch中某个文件修改了,那么pch整个文件里包含的的其他文件也会重新编译一次,这样就会消耗大量时间,所以它里面添加的文件最好是是很少变动或不变动的头文件或者是预编译的代码片段;)文件中添加

[plain] view
plain
copy

  1. #ifdef DEBUG
  2. #define NSLog(...) NSLog(__VA_ARGS__)
  3. #define debugMethod() NSLog(@"%s", __func__)
  4. #else
  5. #define NSLog(...)
  6. #define debugMethod()
  7. #endif

上段代码的意思就是 用宏指令做一个判断,如果DEBUG为真,则编译#ifdef到#endif宏定义,否则编译器就不编译;

这个DEBUG在哪设置呢,

在 "Target > Build Settings > Preprocessor Macros > Debug" 里有一个"DEBUG=1"。

设置为Debug模式下,Product-->Scheme-->SchemeEdit Scheme

设置Build Configuration成Debug时,就可以打印nslog了。

设置Release,发布app版本的时候就不会打印了,提高了性能

时间: 2024-10-19 13:37:13

iOS NSlog的使用以及pch的使用的相关文章

IOS开发 - Info.plist跟pch文件的作用

IOS开发 - Info.plist和pch文件的作用 1. Info.plist和pch文件的作用 2. UIApplication的常见使用 3. AppDelegate的代理方法 4. UIApplication , AppDelegate , UIWindow , UIViewController 的关系 5. IOS程序的完整启动过程 ﹣Info.plist文件﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣我是分割线﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣ *** Bundl

iOS NSLog去掉时间戳及其他输出样式

1.一般项目中我的NSLog会在Prefix.pch文件添加如下代码,已保证在非调试状态下NSLog不工作 1 2 3 4 5 #ifdef DEBUG #define NSLog(...) NSLog(__VA_ARGS__) #else #define NSLog(...) #endif 2.在项目中如果没做任何处理的话会输出如下信息,前面有一个时间戳 1 2014-11-07 08:25:40.885 zcsy[673:8937] cell的高度258.684998 我们修改下宏如下: 1

开源中国iOS客户端学习——(一)Prefix.pch文件

转载自 http://blog.csdn.net/duxinfeng2010/article/details/8287550 当我们新建一个工程的时候,在Supporting FIles文件下会看到一个以  -Prefix.pch结尾文件的文件,pch全称是“precompiled header”,也就是预编译头文件,该文件里存放的工程中一些不常被修改的代码,比如常用的框架头文件,这样做的目的提高编译器编译速度.我们知道当我 们修改一个工程中某个文件代码时候,编译器并不是重新编译所有所有文件,而

iOS开发中添加PrefixHeader.pch要注意的问题

在Xcode6.0已经不默认生成PrefixHeader.pch文件了,而PrefixHeader.pch文件对我们开发带来的便利性是不言而喻的,所以我们怎么在工程中添加PrefixHeader.pch文件呢. 首先.我们创建一个PrefixHeader.pch 然后将这个prefix文件和这个工程关联, 在Build Settings 中搜索Prefix ,在Apple LLVM 6.0 -Languge 中的Prefix Herder 添加新建   的Prefix的路径(直接将这个文件拖进去

iOS - NSLog的使用方法

NSLog的定义 NSLog定义在NSObjCRuntime.h中,如下所示: void NSLog(NSString *format, …); 基本上,NSLog很像printf,同样会在console中输出显示结果.不同的是,传递进去的格式化字符是NSString的对象,而不是chat *这种字符串指针. 示例 NSLog可以如下面的方法使用: NSLog (@"this is a test"); NSLog (@"string is :%@", string)

iOS 成长之路之pch文件

pch文件的导入 :$(SRCROOT)/项目名/pch文件名 pch文件 常用宏定义 屏幕大小 #define ViewWith    [UIScreen mainScreen].bounds.size.width #define ViewHight    [UIScreen mainScreen].bounds.size.height 适配 #define WithwithView(a)  [UIScreen mainScreen].bounds.size.width/375*a #defi

ios nslog 打印字典为中文

#import <Foundation/Foundation.h> @implementation NSDictionary (Log) - (NSString *)descriptionWithLocale:(id)locale { NSMutableString *str = [NSMutableString string]; [str appendString:@"{\n"]; // 遍历字典的所有键值对 [self enumerateKeysAndObjectsUs

IOS release 版本的时候 去掉输出log NSLog

在.pch文件中添加下面一段 #ifndef __OPTIMIZE__ #define NSLog(...) NSLog(__VA_ARGS__) #else #define NSLog(...) {} #endif 如何添加 pch 文件,xcode - new file -pch file.   将Precomplie Prefix Head  修改为 yes    将 Prefix Header路径设置为 $(SRCROOT)/xxxx.pch

开源中国iOS客户端学习

开源中国iOS客户端学习 续写前言 <开源中国iOS客户端学习>续写前系列博客    http://blog.csdn.net/column/details/xfzl-kykhd.html 开源中国iOS客户端学习——序 说到这款开源软件就得提到她的娘家了--开源中国社区: 开源中国社区简介:开源中国 www.oschina.net 成立于2008年8月,是目前中国最大的开源技术社区.传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现.使用.并交流开源技术的平台.目前开源中国社区已收