在Xcode6之前,新建一个工程的时候,系统会帮我们自动新建一个以工程名为名字的pch (precompile header)文件,在开发过程中,可以将工程中使用频繁的头文件包含在.pch文件下,一些宏定义也可以放在这里,编译器就会自动的将pch文件中的头文件添加到所有的源文件中去,这样在需要使用相关类的时候不需要使用import就可以直接使用头文件中的内容,很大程度上带来了编程的便利性,但潜在的也带来了一些问题,这也是在Xcode6中默认不再创建pch的原因吧。
关于pch的得与失,stackoverflow上有段话讲的比较透彻:As to where to put code that you would put in a prefix header, there is no code you should put in a prefix header. Put your imports into the files that need them. Put your definitions into their own files. Put your macros...nowhere. Stop writing macros unless there is no other way (such as when you need__FILE__). If you do need macros, put them in a header and include it.
The prefix header was necessary for things that are huge and used by nearly everything in the whole system (likeFoundation.h). If you have something that huge and ubiquitous, you should rethink your architecture. Prefix headers make code reuse hard, and introduce subtle build problems if any of the files listed can change. Avoid them until you have a serious build time problem that you can demonstrate is dramatically improved with a prefix header.
In that case you can create one and pass it into clang, but it's incredibly rare that it's a good idea.
但有些时候,还是需要pch文件的,那么怎么在Xcode6包括6以后的xcode中添加一个pch文件呢?
1、在Suporting Files里面的main.m上边单击右键,选择New File(新建文件)
然后选择iOS里面的Other里面的PCH File,选择next,并命名。
2、然后就是修改路径。
首先把TARGETS里面的APPle LLVM7.0-Language里面的Precompile Prefix Header改成YES
然后在下边的Prefix Header添加路径。
添加路径的话就是双击Prefix Header后边的空白处,会出来一个框框,然后将你的Prefix Header文件拖拽过去即可。
拖拽完成后点击任何一处空白的地方,我们就会看到路径了。
这里需要注意的是,如果是个人开发,上述操作是没有任何问题的。如果是多人开发,每个人的电脑里面工程文件所在的路径不尽相同,那么说不清谁会提交工程文件,等别人update的时候就会冲突或者报错,就是因为路径不对造成的,那么我们怎么解决这个问题呢?
把“/USser”开始一直到你的工程名字的一段去掉,如上图显示,RequestDemo是我的工程名字,后边的PrefixHeader.pch是我的pch文件,只剩下工程名和pch文件就好了, 这样的话在我们多人开发的过程中就不会因为路径和提交工程文件造成冲突了。
放入一些宏定义
网友评论