Xcode中如何添加pch文件

在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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在Xcode6之前,新建一個(gè)工程的時(shí)候,系統(tǒng)會(huì)幫我們自動(dòng)新建一個(gè)以工程名為名字的pch (precompile h...
    oneDemo閱讀 375評(píng)論 0 1
  • 在Xcode6之前,新建一個(gè)工程的時(shí)候,系統(tǒng)會(huì)幫我們自動(dòng)新建一個(gè)以工程名為名字的pch (precompile...
    和玨貓閱讀 772評(píng)論 2 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,695評(píng)論 19 139
  • 在Xcode6之前,新建一個(gè)工程的時(shí)候,系統(tǒng)會(huì)幫我們自動(dòng)新建一個(gè)以工程名為名字的pch (precompile h...
    寒橋閱讀 333評(píng)論 0 3
  • 『導(dǎo)言』 prefix.pch究竟是什么?我們可以把它稱之為“precompiled header”,從字面上翻譯...
    隨心吧閱讀 5,234評(píng)論 1 6

友情鏈接更多精彩內(nèi)容