iOS:PCH文件的使用

PCH文件全称Precompile Header File.也就是预编译头文件的意思.

PCH主要有三个作用:

1.放一些公用的宏定义.(一个宏可能在多个控制器都会用到,正常需要在每个控制器都写一次,但是将宏定义写在PCH文件中只需要写一次就可以了)

2.把公共的model类#import导入写到PCH文件中.(一个model可能在多个控制器都会需要导入它的头文件,将#import写在PCH文件中就可以在所有控制器中使用)
3.自定义NSLog.(我们在开发的时候可能会使用很多NSLog来测试程序,但是这些NSLog在程序上架之后就没有用了并且还会拖累程序运行速度,一个个去删除可能花费很多时间,使用自定义NSLog可以一次性的删除这些NSLog)

创建方式:

cmd+n来到新建页面选择other中的PCH File,一般不需要改名字.


接下来在Build Settings中找到下面这两个,将Precompile Prefix Header设置成YES,将Prefix Header设置成$(SRCROOT)/所在文件夹名字/PrefixHeader.pch.


这样PCH文件就生效了

#ifndef PrefixHeader_pch
#define PrefixHeader_pch

// Include any system framework and library headers here that should be included in all compilation units.
// You will also need to set the Prefix Header build setting of one or more of your targets to reference this file.

#endif /* PrefixHeader_pch */
//公用的宏定义
#define ABC 100
//公用的model类头文件导入
#import "Person.h"
//自定义NSLog
#ifdef DEBUG
#define MCLog(...) NSLog(__VA_ARGS__)
#else
#define MCLog(...)
#endif

将公用宏定义和公用的model类头文件写在PCH文件中所有的类都可以使用,并且可以正常输出.

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    MCLog(@"%d",ABC);
    Person *person = [[Person alloc]init];
    person.name = @"xiaoli";
    MCLog(@"%@",person.name);
}

自定义NSLog代码的意思是当程序为DEBUG阶段的时候使用NSLog,当程序为release也就是发布状态的时候使用自定义Log替换系统的NSLog使其失效.

在Edie Scheme中下图中的Build Configuration修改为Release可以将程序调整成发布状态.

当程序调整成发布状态之后我们自定义的Log就不会再输出了.


需要注意的是很多时候我们需要使用到C语言,在C语言的类中我们的一些#import头文件是会报错的.

所以我们在PCH文件中如果只想要这行代码在OC中生效,就将他写在下面的这两行代码中间.

#if __OBJC__
#endif





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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值