在Xcode6之前,新建一個(gè)工程的時(shí)候,系統(tǒng)會(huì)幫我們自動(dòng)新建一個(gè)以工程名為名字的pch (precompile header)文件,在開發(fā)過程中,可以將那些整個(gè)工程都廣泛使用的頭文件包含在該文件下,編譯器就會(huì)自動(dòng)的將pch文件中的頭文件添加到所有的源文件中去,這樣在需要使用相關(guān)類的時(shí)候不需要使用import就可以直接使用頭文件中的內(nèi)容,很大程度上帶來了編程的便利性,但潛在的也帶來了一些問題,這也是在Xcode6中默認(rèn)不再創(chuàng)建pch的原因吧。
關(guān)于pch的得與失,stackoverflow上有段話講的比較透徹:http://stackoverflow.com/questions/24158648/why-isnt-projectname-prefix-pch-created-automatically-in-xcode-6
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 (like Foundation.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.
但有些時(shí)候,還是需要pch文件的,那么怎么在Xcode6中添加一個(gè)pch文件呢?
首先,Command+N,打開新建文件窗口:iOS->other->PCH file,創(chuàng)建一個(gè)pch文件,添加需要引入的頭文件名:

其次,修改工程配置文件,將創(chuàng)建的pch文件的路徑添加到building setting中的precompile header選項(xiàng)中去(路徑添加“$(SRCROOT)/項(xiàng)目名稱/pch文件

至此,完成了手動(dòng)添加pch文件,編譯一下程序,如果有錯(cuò)誤檢查一下添加的路徑是否正確。(假如你寫的時(shí)$(SRCROOT)這個(gè)開頭的,那就建在根目錄下,如果是$(PROJECT_DIR),那就無所謂了)
這里注意,開關(guān)Precompile Prefix Header時(shí),pch的編譯和導(dǎo)入機(jī)制是有很大不同的:

(1)如果Precompile Prefix Header為YES,那么pch會(huì)被預(yù)編譯,預(yù)編譯后的pch文件會(huì)被緩存起來,從而提高編譯速度。 (2)如果Precompile Prefix Header為NO,那么pch不會(huì)被預(yù)編譯,而是在每一個(gè)用到它導(dǎo)入的框架類庫(kù)的.m文件中編譯一次,降低了編譯速度。
總結(jié):既然蘋果在Xcode6中去掉了Precompile Prefix Header文件,在開發(fā)的過程中可以盡量少用pch文件,如果要用也要盡量減少pch文件中得內(nèi)容,降低程序?qū)ch文件的依賴。
至此,大功告成,編譯一遍,新添加的pch文件就可以正常使用了^_^。
轉(zhuǎn)載自:http://www.cnblogs.com/mawenqiangios/p/5195866.html