iOS开发 - OC - PCH文件使用
一、 PCH文件的作用
Xcode中,PCH文件在程序编译的时候会自动包含进去。也就是说PCH中的内容是全局的,可以使用在程序的任何地方,通过这个特性,我们可以概括到PCH的作用有以下几个方面:
(1)将经常使用的宏定义在该文件,可以避免多次定义的麻烦
(2)包含多次使用的.h文件
(3)其他需要全局定义的变量等
Xcode6.0之前会自动创建该文件,开发者直接使用即可。Xcode6.0之后需要开发者自己创建配置,至于为什么大概是因为:
(1)不利于代码的移植。 主要体现在部分头文件被写入PCH,移植的时候如果没有将PCH的头文件包含,新项目则会缺失很多头文件。
(2)造成隐式依赖。本来我们可以通过扫描xxx.h和xxx.m文件,找到xxx所依赖的模块。但是滥用pch会让这些依赖关系被掩盖,因为你的文件可能隐式地依赖了pch中定义的某些头文件。我在另外一篇文章架构设计中的循环引用中提到文件之间不应该循环引用,否则系统将越来越复杂和不可维护。
(3)如果PCH中的头文件很多且很大,会造成预编译的过程便的缓慢,体现在用户的体验上则表现为首次进入APP的时间变长,体验效果欠佳。
(4)XCode 中添加了Modules的引入可以更好地替代预编译头文件。目前Modules只能针对Xcode7及以上的SDK。
但是PCH文件也并没有完全退出舞台,只要合理使用,PCH还是能给我们带来不少方便的。Xcode不自动配置PCH文件,我们可以手动进行配制。
二、创建、配置PCH文件
Xcode中 command+N, 选中other ,可以看到其中就有PCH File,创建。取名字最好跟APP关联便于识别,假如这里命名为Test1PCH。
创建好了之后进行配制:
(1)找到 Project > Build Settings > 搜索 “Prefix Header“;
(2)“Apple LLVM 7.0 -Language″ 栏目中你将会看到 Prefix Header 关键字;
(3)输入: $(SRCROOT)/Test/Test1Pch.pch;注意这里最好使用相对路径,后两项分别代表 Target名称 和 PCH文件。
(4)将Precompile Prefix Header为YES,预编译后的pch文件会被缓存起来,可以提高编译速度。效果如下
最后,Clean 并且 build 你的项目. 创建的PCH文件就可以使用了。
转载于:https://www.cnblogs.com/FBiOSBlog/p/5795544.html
iOS开发 - OC - PCH文件使用相关推荐
- (0095)iOS开发之本地文件预览的三种方法(3)
(0090)iOS开发之本地文件预览的三种方法(1) (0094)iOS开发之本地文件预览的三种方法(2) 用功能强大的Webview来实现文件预览功能 我导入的 ios.pdf 前两种可以打开,但是 ...
- (0094)iOS开发之本地文件预览的三种方法(2)
(0090)iOS开发之本地文件预览的三种方法(1) (0095)iOS开发之本地文件预览的三种方法(3) QuickLook预览文件 quickLook预览文件也是系统提供的预览方法,具体使用如下 ...
- IOS基础使用PCH文件全局定义宏常量
IOS基础使用PCH文件全局定义宏常量 在项目中新建一个PCH文件,文件名自己起 里面装入代码 #ifndef PrefixHeader_pch #define PrefixHeader_pch /* ...
- iOS开发网络篇—文件的上传
说明:文件上传使用的时POST请求,通常把要上传的数据保存在请求体中.本文介绍如何不借助第三方框架实现iOS开发中得文件上传. 由于过程较为复杂,因此本文只贴出部分关键代码. 主控制器的关键代码: Y ...
- iOS开发中plist文件的创建与简单读取(一)
iOS开发中plist文件的创建与简单读取(一) 1. 创建一个工程 2. 新建一个plist文件(command+N快捷键或者新建文件 如图下的红色圈) 3. 红色圈是plist的文件名,这里默认为 ...
- ios开发oc高仿京东金融白条额度余额的 ios开发水波纹 ios开发水正弦曲线波纹 ios开发雷达扫描的动画效果
ios开发oc高仿京东金融白条额度余额的 ios开发水波纹 ios开发水正弦曲线波纹 直接上代码,复制粘贴就可以 vc里的 WaterRippleView *topView = [[Water ...
- ios开发oc高仿京东金融白条额度余额的 ios开发水波纹 ios开发水正弦曲线波纹 ios开发雷达扫描的动画效果...
ios开发oc高仿京东金融白条额度余额的 ios开发水波纹 ios开发水正弦曲线波纹 直接上代码,复制粘贴就可以 vc里的 WaterRippleView *topView = [[Water ...
- iOS开发——OC篇常用问题解答(一)
常用问题解答 1.设置 ImagePicker 的大小 ImagePicker 在 Popover Controller 总是以默认大小显示,设置 popoverContentSize 属性似乎无用. ...
- iOS开发学无止境 - NSFileManager文件操作的十个小功能
(配图的小故事还记得嘛) NSFileManager是一个单列类,也是一个文件管理器.可以通过NSFileManager创建文件夹.创建文件.写文件.读文件内容等等基本功能. 下面将介绍NSFileM ...
- ios开发之.pch文件的使用
案例:开源中国iOS客户端 当我们新建一个工程的时候,在Supporting FIles文件下会看到一个以 -Prefix.pch结尾文件的文件,pch全称是"precompi ...
最新文章
- android studio 开发环境搭建
- 我给 Apache 顶级项目提了个 Bug
- Go 语言编程 — 内存分配
- Avalon-MM 阿窝龙妹妹应用笔记
- php 文件扫描去重,PHP中的去重方法详解和文件下载
- COM编程入门---转发
- 常见windows 2000系统进程描述
- Python操作数据库(二)
- 学生信息管理系统html代码,学生信息管理系统源代码.doc
- AD8302 幅度相位检测 鉴幅鉴相器 解调对数放大器 原理图PCB
- 3.2Abstraction data type
- 分光器光衰多少?分光器如何选购?分光器如何使用?
- Log Parser 2.2 + Log Parser Lizard GUI 分析IIS日志示例
- PO:通过Floder限制订单汇总中采购单价及金额栏位
- java 余弦定理_Java實現余弦定理計算文本相似度
- 解决 Failed to fetch http://172.6.0.2/ubuntu/dists/jammy/main/binary-i386/Packages 404 Not Found问题
- SDN和NFV的关系?
- 键盘按键与键码的对照表的对照表
- 活动预告丨易盾CTO朱浩齐将出席2018 AIIA大会,分享《人工智能在内容安全的应用实践》
- 被讨厌的勇气:人际关系论
热门文章
- Flutter开发之GridView组件(20)
- Webpack 4 + React + Typescript 搭建启动模版
- 用Git向gitHub上传项目
- IHelloWorldService
- 网站集成支付宝的方法和所需资料下载
- 创建或打开解决方案时提示“DotNetCore.1.0.1-SDK.1.0.0.Preview2-003131-x86“错误的解决方案
- Intellij IDEA 使用Spring-boot-devTools 没有生效 解决方法
- 一劳永逸解决PPT中声音视频的路径问题(转)
- HttpClient 大量连接等待异常的处理
- 解决“错误 D8016 “/ZI”和“/Gy-”命令行选项不兼容 ”问题