怎么向Xcode6 IOS8之后向项目中添加预编译文件
苹果的XCode在6版本之后新建项目时取消了自动创建预编译头文件pch,该文件里存放的工程中一些不常被修改的代码,比如常用的框架头文件,这样做的目的提高编译器编译速度。我们可以往里面加入一些项目中都要用到的宏,比如最常用的能自动打开或者关闭日志输出功能的宏
#ifdef DEBUG // 调试阶段#define MJLog(...) NSLog(__VA_ARGS__)#else // 发布阶段#define MyLog(...)#endif
还有整个项目中都用得到得头文件,所以,预编译头文件可以让我们在开发中更加方便,它的好处不言而喻,我们知道当我们修改一个工程中某个文件代码时候,编译器并不是重新编译所有所有文件,而是编译改动过文件的,假如pch中某个文件修改了,那么pch整个文件里包含的的其他文件也会重新编译一次,这样就会消耗大量时间,所以它里面添加的文件最好是是很少变动或不变动的头文件或者是预编译的代码片段;
但在Xcode6之后苹果取消了自动生成预编译头文件的功能,原因可能是因为把大量的头文件和宏定义放到pch里边,导致编译时间过长。苹果去掉他可能是要加快编译时间增加用户体验。虽然失去了编程的便利性,但增加了用户体验,这也体现了苹果对用户体验的重视程度。
接下来我们就来创建预编译头文件:
首先新建PCH File文件:
然后修改buildsetting文件(搜索一下prefix):
将图中第二条红线处改为yes
然后双击Prefix Header那行的右边部分,在弹出的框中填入PCH文件的路径如:其中$(SRCROOT)代表的是项目的根目录
或者直接写 工程名/预编译文件名 也可以.
最后再在pch文件写如下代码
#ifdef __OBJC__#import <UIKit/UIKit.h>#import <Foundation/Foundation.h>#endif
好了 这样就添加完成了。
怎么向Xcode6 IOS8之后向项目中添加预编译文件的更多相关文章
- DelphiXE10.1项目中增加预编译的方法
操作: 菜单选择Proceject->Options->Delphi Compilerz在Conditional Defines(第一行)中添加预编译标识.例:VCL代码:uses{$IF ...
- iOS xcode6添加预编译文件
在xcode6以后,由于苹果不建议开发者乱用预编译文件,所以,在项目创建之后 就不会自动生成预编译文件. 那么如果我们想要使用预编译文件,就需要自己动手来添加.那到底该如何为我们的项目添加预编译文件呢 ...
- Android Studio] Gradle项目中添加JNI生成文件(.so文件)
转:http://blog.csdn.net/qiujuer/article/details/24209457 为了适应潮流使用Android Studio还是有半年多了! 对于从Eclipse迁移项 ...
- iOS---------Xcode中添加预编译pch文件
第一步:打开项目,com+N,将页面滑动最下面如图 第二步:创建pch文件 第三步:修改buildsetting配置文件 在搜索框里输入prefix搜索一下,比较好找 1.将Pr ...
- 在VisualGDB中配置预编译头加快编译速度
今天是中秋佳节,但是写完已经是第二天凌晨了,还是祝大家中秋快乐! VS对C++的支持相较GCC太弱了,连续几个VS版本对C++的改进都很小.很少.对Cpper也许是一种痛,我们也许希望能使用VS的强大 ...
- web项目中添加logger日志
在项目中添加log4j.xml文件 log4j.xml文件 <?xml version="1.0" encoding="UTF-8" ?><! ...
- 在WebStorm环境中给nodejs项目中添加packages
照前文 http://www.cnblogs.com/wtang/articles/4133820.html 给电脑设置了WebStorm的IDE的nodejs开发环境.新建了个express的网站 ...
- win7,vs2010,asp.net项目中修改外部js文件,在调试时加载的还是旧文件
win7,vs2010,asp.net项目中修改外部js文件,在调试时加载的还是旧文件 我杀过 w3wp.exe和asp.net_state的进程,重启 iis admin的服务,都还是不行. 只是把 ...
- 在xcode运行编译时,编译成功,但项目中显示缺少该文件,这是只要关闭重启xcode即可。
在xcode运行编译时,编译成功,但项目中显示缺少该文件,这是只要关闭重启xcode即可.
随机推荐
- 没有Google的日子很难过...But you can try...
作为开发人员,经常会通过Google查询一些资料(别问我为什么不用百度,当你输入关键字,然后给你提示没有查询到结果,或者一页全是垃圾资料的时候你就知道了).但是,N个月前,Google不好使了,同时N ...
- 清除linux缓存命令
命令 #sync #echo 3 > /proc/sys/vm/drop_caches 查看内存情况: # more /proc/meminfo Kernels 2.6.16 and newer ...
- AngularJS 五大特性,加快 Web 应用开发
AngularJS 是谷歌的一个 JavaScript 框架,旨在简化前端应用程序的开发.如果你在开发单页的应用程序,我敢肯定你已经听说过它.我是 AngularJS 的忠实粉丝,在这篇文章中我将概述 ...
- Odyssey.js – 创建互动的,有吸引力的故事
Odyssey.js 是一个开源工具,它可以让你的地图,叙述和其他多媒体结合成一个美丽的故事.创建新的故事很简单,要求无非是一个现代的 Web 浏览器和一个好的想法.你可以使用现成的模板来控制和设计精 ...
- IOS开发UI基础UISwitch属性
UISwitch属性1. onTintColor 处于on时switch 的颜色 switchImage.onTintColor = [UIColor grayColor];2.tintC ...
- JAVA - package与import解析(一)
一.为什么要引入package和import?这个问题和c++中引入命名空间是一样的,也是为了解决重名问题.java通过包机制来解决重名问题,也就相当于给重名的代码加一系列前缀,从而达到唯一标识的作用 ...
- 译:c#生成条码的web控件
译文:http://www.codeproject.com/Tips/846860/Csharp-Barcode-Generator-Web-Control 在asp.net的web页用c#的web控 ...
- MVC显示详细记录Without Entity Framework
看过此篇<MVC用非Entity Framework将数据显示于视图(二)>http://www.cnblogs.com/insus/p/3364482.html 了解到把数据库中数据表的 ...
- C#中部分方法返回值类型为什么只能是void?
这个问题答案选至<C#入门经典> 如果方法具有返回类型,那就可以作为表达式的一部分: x=Manipulate(y,z); 如果没有给部分方法提供实现代码,编译器就会在使用该方法的所有地方 ...
- MongoDB之数据分布式存储
在MongoDB的世界,做数据分布式存储显得非常简单.只要按照前面介绍的 集群搭建 完成就完全具备了数据分布式存储的要求. 在这里分清几个概念:去前面的文章可以找到介绍 1. 复制集 功能是实现数 ...