下面就基于彩票項目,演示一下如何創(chuàng)建和手動配置PCH文件。選擇項目目錄中Other模塊文件夾,按住command + N組合鍵,在彈出的Choose a template for your new file窗口中,選擇Other模塊下的PCH File,如下圖所示:

PCH文件的命名一般和它所在的項目同名。新建完P(guān)CH文件以后,先在Xcode中對其進行手動配置。點擊工程文件名,然后點擊Build Settings,在搜索框中輸入Prefix,就可以快速定位到手動配置PCH文件的位置了:

將Precompile Prefix Header后面的值修改為YES,然后雙擊Prefix Header后面的空白處,Xcode會彈出一個輸入框,直接將PCH文件在項目中的相對路徑粘貼上去,按回車鍵即可配置成功:

如何獲取PCH文件在項目中的相對路徑?我們先來看如何獲取PCH文件在項目中的絕對路徑。點擊項目目錄中的PCH文件,然后點擊Xcode右上角的Show the file Inspector即可獲取PCH文件在項目中的絕對路徑:

其實獲取相對路徑也是有技巧的。如果你對Xcode工程目錄比較熟的話,肯定會注意到,每次創(chuàng)建一個項目以后,項目文件夾下面一定會有一個跟它同名的子文件夾,而從這個子文件夾往后,直到PCH文件所在的位置,它就是PCH文件在項目中的相對路徑。以我們這個PCH文件為例,你有了全路徑以后,從ESMyLottery.pch往前一直復(fù)制,直到你發(fā)現(xiàn)有兩個相同的"網(wǎng)易彩票"時停止即可,這個就是你的PCH文件在項目中的相對路徑:

如果你還是不放心的話,可以右擊PCH文件,點擊Show in Finder,打開PCH文件在硬盤目錄中的位置,然后一級一級的往前面數(shù)也可以:

數(shù)完了你的PCH文件在項目中的級數(shù),在復(fù)制PCH文件相對路徑時按照級數(shù)往前面復(fù)制即可。
二、編輯PCH文件
由于編輯器會自動幫你把所有的預(yù)編譯文頭文件導(dǎo)入到項目所有的源文件中,所以從編程規(guī)范上講,應(yīng)該利用條件編譯將Objective-C頭文件隔離起來。尤其是在混合編程時,這種操作就顯得格外重要。下面就具體演示一下。
先在PCH文件中隨便導(dǎo)入一個OC分類的頭文件,然后在項目中新建一個C語言文件,在沒有利用條件編譯對OC分類頭文件進行有效隔離的情況,按住command + B鍵編譯一下,看看會出現(xiàn)什么情況:

因為編譯器會將PCH中的頭文件導(dǎo)入到項目中所有的源文件中,而C語言的源文件是不可能識別OC頭文件中的內(nèi)容的,所以編譯器會報一堆的錯誤?,F(xiàn)在修改PCH文件,利用條件編譯將OC分類的頭文件進行隔離,然后再重復(fù)上面的操作看一下還有沒有報錯:

#ifdef *OBJC*(OBJC前后是兩條下劃線)和#endif可以將OC的頭文件與C語言的源文件進行有效的隔離。也就是說,你在OC頭文件前后加了這個條件編譯之后,編譯器便不再將OC的頭文件拷貝到C語言的源文件中,它只會把OC的頭文件拷貝到OC的源文件中,所以之前的錯誤都消失了。
PCH文件可以很方便的將多個文件中都要使用的頭文件一次性導(dǎo)入到項目中所有的源文件中,同時,你也可以在PCH文件中定義全局使用的宏,這種操作可以有效幫你節(jié)約開發(fā)時間。但是,同時你也應(yīng)該注意到,PCH文件的使用,無形中增加了項目編譯的時間,應(yīng)該有選擇性的慎重使用。