博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios中pch文件的创建与配置
阅读量:5867 次
发布时间:2019-06-19

本文共 1202 字,大约阅读时间需要 4 分钟。

1、pch预编译头文件的利与弊

  • 1.1 说明:

    • .pch文件是一个头文件,定义在.pch文件中的内容能够被项目中的其他文件访问。
    • 简单来说,在.pch文件中定义的弘定义会作用到项目中的所有文件。 对于xcode6中创建工程不在自动添加.pch文件了。
    • 查了下资料,很多资料认为.pch文件会影响效率。我到时觉得.pch文件总体上会加速编译,因为xcode会对.pch文件中的定义预编译并缓存。
    • 至于为什么会在xcode6中被踢掉,我猜是因为很多开发者使用方式不对,反而导致减慢编译速度了吧。
    • 在Xcode6之前,创建一个新的Project,Xcode会在Supporting files文件夹下面自动创建一个“工程名-Prefix.pch”文件,
    • 也是一个头文件,pch头文件的内容能被项目中的其他所有源文件共享和访问,是一个预编译头文件。
  • 1.2 预编译头文件的用途主要有:

    • 存放一些全局的宏(整个项目中都用得上的宏)
    • 用来包含一些全部的头文件(整个项目中都用得上的头文件)
    • 能自动打开或者关闭日志输出功能
  • 1.3 弊端

    • 但是!为什么苹果在Xcode6取消了这个功能呢,综合考虑有以下副作用:
    • 不利于代码移植
      • 如果同一份代码需要在多个项目中使用,过度使用PCH就会带来麻烦。
      • 假设项目A中PCH加了这样一行代码:#import <Security/Security.h> ,而你的某个组件使用了Security,
      • 将组件代码copy到了项目B中可能编译不了,因为项目B中的PCH并没有添加Security.h。
    • 隐式依赖关系
      • 本来我们可以通过扫描xxxx.h文件和xxxx.m文件来找到所以来的模块,但是滥用PCH会让这些以来关系被掩盖,因为文件中可能隐式的依赖了PCH中定义的某些头文件。
    • 所以我们应该节制的使用PCH。

2、创建流程

  • 2.1 创建文件快捷键Command + N,输入pch

    1213778-20180926090501002-226396574.png
  • 2.2 保存

    1213778-20180926090513057-975861930.png
  • 2.3 生成pch文件

    1213778-20180926090546170-1678227160.png

3、配置流程

  • 3.1 查找配置位置

    1213778-20180926090626238-1182650213.png
  • 3.2

    1213778-20180926090658117-155727466.png

4、教你使用

  • 4.1 避短

    • 不要把绝大部分弘定义放进来。
    • 公用性小的宏定义别放进来。
  • 4.2 扬长

    • 放置公用性高的头文件,比如使用率较高的fundation框架,第三方库头文件。
    • 为了整洁性,建立把零散的宏定义整理到某个头文件再将该头文件import入.pch文件。
    • 如果不想使用.pch文件,我觉得可以这么做。
    • 以MVC架构为例。 比如有一些控件的category。为了拥有pch那样的便利性又不想作用到其他不会使用它的文件。
    • 我们可以将所有view层的文件继承同一个父类,可以在这个父类中import所有需要用到的更view层有关的公用宏定义,fundation框架及第三方库。
    • Model层和Controller层同理。

转载于:https://www.cnblogs.com/CH520/p/9384917.html

你可能感兴趣的文章
集合的foreach 与 lambda表达式
查看>>
设计模式C++实现(10)——桥接模式
查看>>
centos桌面使用
查看>>
2.Struts2-Action
查看>>
Android第四次作业
查看>>
Python 3 进阶 —— 使用 PyMySQL 操作 MySQL
查看>>
ACCEPTANCE CRITERIA FOR USER STORIES
查看>>
线性方程组的迭代求解算法——原理
查看>>
loadrunner关联及web_reg_save_param方法浅析
查看>>
初识DJango——Web框架
查看>>
php动态获取网页图片路径~
查看>>
28、可变参数和集合数组的互转
查看>>
[AX]AX2012 Form开发概览
查看>>
[AX]AX2012 Number sequence framework :(一)概览与原理浅析
查看>>
小程序单图上传到服务器
查看>>
iOS开发 - OC - 实现本地数据存储的几种方式一
查看>>
查看tomcat,jdk的操作位数
查看>>
C语言中的指针
查看>>
c51较c比较,单片机最小系统
查看>>
模式化窗口问题![window.dialogArguments]
查看>>