iOS工程开发笔记<二>

在Xcode 4, 5的模板工程中可以看到Precompile Prefix Header,但是在Xcode 6被去除了。

Xcode 6去掉Precompile Prefix Header的主要原因在于:

(1)去掉自动导入的系统框架类库的头文件,可以提高原文件的复用性,便于迁移。

(2)一个肥胖无比的Prefix Header会大大增加Build Time。

为了取代在Prefix Header中自动导入的框架,可以在每一个需要导入系统框架的文件中通过#import来手动导入,当然要确保Build Settings中的Enable Modules是打开的。

如果在Prefix Header中导入了,那么我们在工程的每一个文件中可以免费获得使用的权利,而无需手动在每一个.h/.m文件中导入。该文件确有其方便之处。

如果一定要用到PreFix Header文件,我们可以手动配置。

  1. 在工程中增加一个pch文件,命名还是按照Xcode 5的模板比较好:工程名-Prefix.pch,例如a-Prefix.pch
  2. 设置Build Settings

设置Precompile Prefix Header为YES,那么pch会被预编译,预编译后的pch文件会被缓存起来,从而提高编译速度。可以从下面的Build Log中看出:

如果Precompile Prefix Header为NO,那么每个引用了pch内容的.m文件都要编译一次pch,可能Apple会另外做缓存机制,但是这样还是降低了编译的速度。

既然Apple标准都建议我们不用pch了,那么还是尽量少用吧。当然,如果一定要用,还是尽量减少pch文件中的内容,降低工程对pch文件的依赖性,便于日后的迁移和解耦。

时间: 2024-09-30 07:56:49

iOS工程开发笔记<二>的相关文章

iOS动画开发之二——UIView动画执行的另一种方式

iOS动画开发之二--UIView动画执行的另一种方式 上一篇博客中介绍了UIView的一些常用动画,通过block块,我们可以很方便简洁的创建出动画效果:http://my.oschina.net/u/2340880/blog/484457,这篇博客再介绍一种更加传统的执行UIView的动画的方法. 这种方式相比如block的方式,显得要麻烦一些,apple官方也推荐我们使用带block的创建动画的方式,我们可以将编程重心更多的放在动画逻辑的实现上.使用begin和commit方式主要分为三个

PHP微信公众开发笔记(二)

PHP微信公众开发笔记系列 日期:2014.9.1 需求分析: 在成功的开启了微信开发者服务之后,我们便需要开始做响应用户操作的功能了.其实做微信公众平台,当初的目的我就是想做成一个服务平台,因为刚大学毕业,同学各奔东西.有的时候可能我们会到一个陌生的城市去,那时可能就会想啊,这个城市有班上的同学在么?这时掏出手机,点开服务号输入这个城市名,就会返回一串信息,假如有同学在这个城市,就会列出联系信息之类的.当然也许会说,既然是熟悉的同学,那么肯定会知道联系方式之类的,还需要这样多此一举么.而我的考

iOS多线程开发(二)---线程管理

线程管理 线程管理包括创建,配置,退出三部分.主要包括创建线程的成本,线程创建,线程属性配置,线程主体入口函数编写,线程中断等 一,线程创建成本 1,为辅助线程分配的堆栈空间大小,便于系统和进程管理,以及为函数参数和局部变量分配空间 A,内核数据结构(kernel data structures)---大约1KB,This memory is used to store the thread data structures and attributes, much of which is all

iOS编程开发笔记1——OOP,iOS,MVC

OOP,iOS,MVC 何政达 [前言]:写这篇文章的目的是总结一下这几天学到的有关iOS编程的有关知识点.主要分三部分:OOP的设计理念:iOS的构成:MVC的具体应用. Part I :OOP 说起OOP,大家都知道是什么--面向对象程序设计(Object-OrientedProgramming).但是我们为什么要使用这样的一种设计模式来进行我们的程序设计呢?记得一开始学习编程的时候是小学六年级,当时学习的是BASIC:上了初中以后学习PASCAL语言:上了高中开始学习C语言:到了大学之后逐

离线谷歌地图API的开发笔记(二)

一.地图引擎介绍 离线地图引擎运行在WINDOWS平台上,底层由Visual c++语言开发,编译为OCX插件方式.占用文件少,便于二次开发的快速安装部署. 具有专业地图的基础操作功能:地图放大.缩小.移动.测量距离,测量面积. 支持以下矢量操作:点.线.面.透明矩形.透明圆形.箭头等添加/编辑/删除操作. 软件支持操作系统:Windows98/Me/2000/XP/win7/win8/win10 支持VB,VC,Delphi,C#等开发工具的二次开发, 从此可以专注于您的专业领域,不再为地图开

IOS网络开发(二)

1 局域网群聊软件 1.1 问题 UDP协议将独立的数据包从一台计算机传输到另外一台计算机,但是并不保证接受方能够接收到该数据包,也不保证接收方所接收到的数据和发送方所发送的数据在内容和顺序上是完全一致的. UDP广播就是建立于UDP协议上的数据传输,当网络中的某一台计算机向交换机或路由发送一个广播数据时,交换机或路由则会将此广播数据发送到其节点下的所有接收者.本案例使用第三方Socket编程框架AsyncUdpSocket框架,基于UDP广播实现一个局域网群聊软件,一个基于UD广播的聊天室程序

RBL开发笔记二

 17:13:55 2014-08-25 有以下几个点:  第一 :怎么在预处理阶段能够做到识别某个宏是否给定义了  这里就定义了一个SystemConfig.h 专门做这个事情  当然是需要makefile来配合的 http://blog.csdn.net/chaoqunz/article/details/6033663  这篇博文已经提到相应的方法  在makefile里加一个-D 参数  这相当于就是Makefile一个补充参数吧. 第2: 因为我的计划写这个RBL的时候  可以通过配置文

Fast.Framework开发笔记二:VisualStudio解决方案的搭建

VisualSutio项目结构图: 对!你没有看错,本篇说的就是解决方案的搭建.是不是觉得没一点技术含量啊?,我们先来看下要搭建一个什么样的解决方案吧? 第一.软件架构师能对框架代码进行封装(Framework.Applications). 第二.软件开发工程师以DLL形式调用所有框架代码,并在相应的项目中可以进行定制化开发. 解决方案说明: Applications (框架的业务代码将会放在这里面,实际路径在Fast.ERP.Web之下,是为了开发项目在访问框架里面的View页面) |----

Android TV 开发笔记二:创建第一个Android TV App

一:创建 New Project 1. 2. 3. 4. 创建成果后发现已经帮你创建好了一些demo页面,并且数据都已经绑定好了 二:解决错误 1.创建成功后,build发现报错了,如下: 这个错误是因为版本问题导致的 解决方法,将版本号修改为以下的: 接着又会报错: 作为一个程序员,这点小错误相信难不倒你,自己解决吧,是HeaderItem用的构造函数不对导致的 至此终于得到了一个可以运行的AndroidTV Demo