一、 PCH文件的作用 Xcode中,PCH文件在程式編譯的時候會自動包含進去。也就是說PCH中的內容是全局的,可以使用在程式的任何地方,通過這個特性,我們可以概括到PCH的作用有以下幾個方面: (1)將經常使用的巨集定義在該文件,可以避免多次定義的麻煩 (2)包含多次使用的.h文件 (3)其他需要全 ...
一、 PCH文件的作用
Xcode中,PCH文件在程式編譯的時候會自動包含進去。也就是說PCH中的內容是全局的,可以使用在程式的任何地方,通過這個特性,我們可以概括到PCH的作用有以下幾個方面:
(1)將經常使用的巨集定義在該文件,可以避免多次定義的麻煩
(2)包含多次使用的.h文件
(3)其他需要全局定義的變數等
Xcode6.0之前會自動創建該文件,開發者直接使用即可。Xcode6.0之後需要開發者自己創建配置,至於為什麼大概是因為:
(1)不利於代碼的移植。 主要體現在部分頭文件被寫入PCH,移植的時候如果沒有將PCH的頭文件包含,新項目則會缺失很多頭文件。
(2)造成隱式依賴。本來我們可以通過掃描xxx.h和xxx.m文件,找到xxx所依賴的模塊。但是濫用pch會讓這些依賴關係被掩蓋,因為你的文件可能隱式地依賴了pch中定義的某些頭文件。我在另外一篇文章架構設計中的迴圈引用中提到文件之間不應該迴圈引用,否則系統將越來越複雜和不可維護。
(3)如果PCH中的頭文件很多且很大,會造成預編譯的過程便的緩慢,體現在用戶的體驗上則表現為首次進入APP的時間變長,體驗效果欠佳。
(4)XCode 中添加了Modules的引入可以更好地替代預編譯頭文件。目前Modules只能針對Xcode7及以上的SDK。
但是PCH文件也並沒有完全退出舞臺,只要合理使用,PCH還是能給我們帶來不少方便的。Xcode不自動配置PCH文件,我們可以手動進行配製。
二、創建、配置PCH文件
Xcode中 command+N, 選中other ,可以看到其中就有PCH File,創建。取名字最好跟APP關聯便於識別,假如這裡命名為Test1PCH。
或者單擊項目右鍵,newfile :
創建好了之後進行配製:
(1)找到 Project > Build Settings > 搜索 “Prefix Header“;
(2)Prefix Header 關鍵字;
(3)輸入: $(SRCROOT)/StudyOC/PrefixHeader.pch;註意這裡最好使用相對路徑,後兩項分別代表 Target名稱 和 PCH文件。
(4)將 Precompile Prefix Header 為 YES,預編譯後的pch文件會被緩存起來,可以提高編譯速度。效果如下
最後,Clean 並且 build 你的項目. 創建的PCH文件就可以使用了。