在Xcode6之前世剖,新建一個(gè)工程的時(shí)候,系統(tǒng)會(huì)幫我們自動(dòng)新建一個(gè)以工程名為名字的pch (precompile header)文件,在開發(fā)過程中笆焰,可以將那些整個(gè)工程都廣泛使用的頭文件包含在該文件下,編譯器就會(huì)自動(dòng)的將pch文件中的頭文件添加到所有的源文件中去见坑,這樣在需要使用相關(guān)類的時(shí)候不需要使用import就可以直接使用頭文件中的內(nèi)容嚷掠,很大程度上帶來(lái)了編程的便利性,但潛在的也帶來(lá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)纪岁,那就無(wú)所謂了)
這里注意凑队,開關(guān)Precompile Prefix Header時(shí),pch的編譯和導(dǎo)入機(jī)制是有很大不同的:
(1)如果Precompile Prefix Header為YES幔翰,那么pch會(huì)被預(yù)編譯漩氨,預(yù)編譯后的pch文件會(huì)被緩存起來(lái),從而提高編譯速度遗增。 (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