1. PCH文件概述

  • PCH文件是一种预编译头文件(一般扩展名为.PCH),是把一个工程中较稳定的代码预先编译好放在一个文件(.PCH)里。这些预先编译好的代码可以是任何的C/C++代码--甚至可以是inline函数,只它们在整个工程中是较为稳定的,即在工程开发过程中不会经常被修改的代码。

  • 在 Xcode6.0 之前的版本中,生成的 Single View Application 工程中自动存在PCH文件,Xcode6.0 之后就去掉了pch,为了一些琐碎的头文件引用,加快了编译速度!

  • 如图为 Xcode5 的工程截图:

2. PCH文件的创建(Xcode6.0 之前的版本)

 在工程中 command + N —> iOS中的 Other —> PCH File —> Next —> Create

 PCH文件是提前编译的,所以我们要告诉工程。具体操作如下图:

 当然如果想要填写的话,可以使用 $(SRCROOT) 来获取你工程文件的路径,完整可以写为:$(SRCROOT)/PCHTest/header.pch

3. PCH文件的作用

  • 存放一些公用的宏

  • 存放一些公用的头文件,一般开发中方工具类的头文件或者分类头文件等。

  • 管理日志输出

  自定义Log: #define ZFLog(…) NSLog(__VA__ARGS__)

  宏里面的可变参数:...

  函数中的可变参数:__VA__ARGS__

  日志输出非常耗性能,一般发布的时候不需要日志文件,只有调试的时候才需要。

  在发布上线的时候,我们有两种简单的方式来消除在工程中所有的日志输出

   ① 我们可以直接注释后面的 #define ZFLog(…) // NSLog(__VA__ARGS__),就可以消除在工程中所有的日志输出

   ② 还可以通过一个宏进行条件编译,在调试阶段,xcode会自动定义一个DEBUG宏,利用这个宏,就能进行条件编译。

      #ifdef DEBUG // 调试阶段
      #define ZFLog(…) NSLog(__VA__ARGS__)
      #else // 发布阶段
      #define ZFLog(…)
      #endif

4. PCH文件使用注意事项

 在 PCH 写的有关 OC 的东西,最好放在 #ifdef __OBJC__ ,Xcode 在每个 OC 文件中都定义了这个宏,也就意味着只有 OC 中的文件才拥有这些宏,避免项目中有 C 文件的时候,报错。
 比如在c文件中,使用 #import ,就会报错,因为c文件不能识别 #import , 只有 OC 文件才能识别。在 PCH 中的东西能被项目中的所有文件共享, C 文件共享 #import 就报错。
#ifdef __OBJC__ // OC文件的正确写法
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif #import "ZFTool.h" // 写在这里可能报错,所以不要写在这里

【原】iOS学习之PCH文件的更多相关文章

  1. iOS开发中.pch 文件的使用及其相关工程设置

    .pch文件 也是一个头文件,pch头文件的内容能被项目中的其他所有源文件共享和访问.是一个预编译文件. 首先说一下pch的作用: 1.存放一些全局的宏(整个项目中都用得上的宏) 2.用来包含一些全部 ...

  2. iOS开发之pch文件

    项目的Supporting files文件夹下面有个“工程名-Prefix.pch”文件,也是一个头文件 pch头文件的内容能被项目中的其他所有源文件共享和访问 一般在pch文件中定义一些全局的宏 在 ...

  3. iOS开发之.pch文件初识

    pch全称是“precompiled header”,即预编译头文件,自Xcode6诞生之日起,便在Supporting Files文件下消失多年.说起苹果对pch的爱恨情仇,其分析pch的作用便不言 ...

  4. 李洪强iOS开发之-PCH文件的配置

    pch 可以用来存储共享信息,比如设备屏幕的宽度,高度.版本号等等 公用信息 Xcode 老版本会自动为我们创建pch文件,新版本开始不自动创建了,如果需要使用可以自己手动创建 创建完成后可以在里面定 ...

  5. iOS开发添加pch文件

    首先说一下pch的作用: 1.存放一些全局的宏(整个项目中都用得上的宏) 2.用来包含一些全部的头文件(整个项目中都用得上的头文件) 3.能自动打开或者关闭日志输出功能 如何在Xcode中添加pch文 ...

  6. iOS项目添加PCH文件

    1.单击Info.plist右键单击->New File->Other->PCH File创建PCH文件 文件名设置成:项目名-Prefix  ->点击Create,创建成功. ...

  7. IOS Xcode7 新建PCH文件

    第一步:新建文件找到iOS中的Othere点击PCH File 点击Next 第二步:修改文件名为当前工程名(一般与工程名同名),勾选Targets,点击create创建 第三步:如图选中红框中的路径 ...

  8. (转)iOS学习之 plist文件的读写

    在做iOS开发时,经常用到到plist文件, 那plist文件是什么呢? 它全名是:Property List,属性列表文件,它是一种用来存储串行化后的对象的文件.属性列表文件的扩展名为.plist ...

  9. iOS学习之 plist文件的读写

    在做iOS开发时,经经常使用到到plist文件,  那plist文件是什么呢? 它全名是:Property List,属性列表文件,它是一种用来存储串行化后的对象的文件.属性列表文件的扩展名为.pli ...

随机推荐

  1. python基础——多重继承

    python基础——多重继承 继承是面向对象编程的一个重要的方式,因为通过继承,子类就可以扩展父类的功能. 回忆一下Animal类层次的设计,假设我们要实现以下4种动物: Dog - 狗狗: Bat ...

  2. 微信支付 - V3退款

        退款问题: 1.证书加载不进去,出现"内部错误" 解决:在iis中找到对应的应用连接池,右键高级设置,找到"加载用户配置文件"改为true.   2.需 ...

  3. 【翻译十五】-java并发之固定对象与实例

    Immutable Objects An object is considered immutable if its state cannot change after it is construct ...

  4. 限定符【const】用法大全

    1. 限定符声明变量只能被读 const int i=5; int j=0; ... i=j; //非法,导致编译错误 j=i; //合法 2. 必须初始化 const int i=5; //合法 c ...

  5. ubuntu初始化root帐号密码

    Ubuntu Kylin 14.04的安装过程中并没有提供设置root密码的过程,取而代之的是自定义的帐号. 如果我们需要使用到root帐号或者root权限,则需要重新设置root帐号的密码. 设置方 ...

  6. 在Asp.Net MVC中设定site路径所对应的默认action

    设置路由的default的Controller和Action可以达到我们预期的效果,代码如下所示: public class RouteConfig { public static void Regi ...

  7. Socket 通讯

    #import "ViewController.h" #import <sys/socket.h> #import <netinet/in.h> #impo ...

  8. uri,url.urn

    uri:Web上可用的每种资源 - HTML文档.图像.视频片段.程序等 - 由一个通过通用资源标志符(Universal Resource Identifier, 简称"URI" ...

  9. cdoj1324暴力分块

    #include <iostream> #include <cstdio> #include <algorithm> #include <cmath> ...

  10. SecureCRT中文显示乱码

    环境:SecureCRT登陆REDHAT5.3 LINUX系统 问题:vi编辑器编辑文件时文件中的内容中文显示乱码,但是直接使用linux系统terminal打开此文件时中文显示正常,确诊问题出现在客 ...