iOS pch文件的作用和用法(附:在release版本禁止输出NSLog内容)

一. pch文件的作用和用法(Xcode > 4.0)
pch全称是“precompiled header”,也就是预编译头文件。
开发的过程中可以将广泛使用的头文件以及宏包含在该文件下,编译器会自动将pch文件中的头文件,添加到所有的源文件中去。这样在需要使用相关类的时候不需要使用import就可以直接使用头文件中的内容,很大程度上带来了编程的便利性。
但是在Xcode6中去掉Precompile Prefix Header文件,主要原因可能在于Prefix Header大大的增加了Build的时间。
缺点:
当我们修改一个工程中某个文件代码时候,编译器并不是重新编译所有所有文件,而是编译改动过文件;假如pch中某个文件修改了,那么pch整个文件里包含的的其他文件也会重新编译一次,这样就会消耗大量时间。



二. 手动添加pch文件
1.  创建pch文件
cmd + n  -> other -> PCH File
2.  将它与编译设置关联(修改工程配置文件)
Build setting中搜索 prefix header, 添加path 
$(SRCROOT)/$(PROJECT_NAME)/PrefixHeader.pch
其中:
$(SRCROOT):代表工程路径
$(PROJECT_NAME):代表项目名称
PrefixHeader.pch : 创建的pch文件名
3.  Precompile Prefix Header
如果Precompile Prefix Header为YES,那么pch会被预编译,预编译后的pch文件会被缓存起来,从而提高编译速度。
如果Precompile Prefix Header为NO,那么pch不会被预编译,而是在每一个用到它导入的框架类库的.m文件中编译一次,降低了编译速度。



三.  使用 ---- 该文件里存放的工程中一些不常被修改的代码
1.  常用的宏定义
#define ScreenWidth  ([[UIScreen mainScreen] bounds].size.width)
#define ScreenHeight ([[UIScreen mainScreen] bounds].size.height)

#define iOS9 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9.0)
#define iOS8 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
#define iOS7 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)
#define iOS6 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 6.0)


2.   Release版去掉所有的NSLog(release模式通常会定义 __OPTIMIZE__,debug模式不会)
#ifndef __OPTIMIZE__
#define NSLog(...) NSLog(__VA_ARGS__)
#else
#define NSLog(...) {}
#endif


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值