-
pch文件:
預編譯頭文件(一般擴展名為.PCH),是把一個工程中較穩(wěn)定的代碼預先編譯好放在一個文件(.PCH)里,它們在整個工程中是較為穩(wěn)定的,即在工程開發(fā)過程中不會經(jīng)常被修改的代碼。在我的理解里是把一些宏定義(kScreenW等),一些要在多個類中使用的頭文件在此文件中書寫。簡單來說,在.pch文件中定義的宏定義會作用到項目中的所有文件。
-
pch文件的作用:
對于xcode6以后創(chuàng)建工程不在自動添加.pch文件了,很多資料認為.pch文件會影響效率。我覺得.pch文件總體上會加速編譯,因為xcode會對.pch文件中的定義預編譯并緩存。之所以減慢編譯速度應(yīng)該是因為很多開發(fā)者使用方式不對吧。
我們可以想到.pch是把雙刃劍,提供便利性的同時如果使用不當可能增加Build的時間。 -
使用注意點:
- 不要把絕大多數(shù)甚至是所有的宏定義放進來。
- 在某個類或者某幾個類中使用的宏定義別放進來。
- 放置公用性高的頭文件,比如使用率較高的fundation框架,第三方庫頭文件。
- 為了整潔性的要求,建議把公用性低的宏定義整理到某個頭文件再將該頭文件寫入.pch文件。
-
pch文件的創(chuàng)建
- 新建文件(command+N)選擇PCHFile
pch創(chuàng)建.png
- 點擊項目,選擇Bulid Settings,在搜索框中寫入Prefix Header
set.png
- 找到這一欄Precompile Prefix Header,將NO改為Yes
YES.png
- 在Prefix Header這一欄后面雙擊出現(xiàn)白框,輸入$(SRCROOT)/項目名/PCH文件名.pch 。
輸入.png
注意這里的SRCROOT一定要大寫,該目錄下的所有文件不能出現(xiàn)漢字否則找不到路徑。如下圖的路徑為:$(SRCROOT)/myCar/Resource/Global/PrefixHeader.pch
路徑.png
- 到這里已經(jīng)配置完畢,快捷鍵(Command+B)編譯下看是否報錯,報錯請看上面的注意點。沒報錯的話可以在pch文件寫宏定義測試下,以及導入一些頭文件。
#ifndef PrefixHeader_pch
#define PrefixHeader_pch
// Include any system framework and library headers here that should be included in all compilation units.
// You will also need to set the Prefix Header build setting of one or more of your targets to reference this file.
//下面是宏定是獲取屏幕的寬度和高度
#define KScreenW [UIScreen mainScreen].bounds.size.width
#define KScreenH [UIScreen mainScreen].bounds.size.height
#endif /* PrefixHeader_pch */