在Xcode6之後,包括現在的Xcode7,都不會自動產生.pch文件了。貌似已經不推薦使用了。但是在看別人很多項目的時候,還是有包括這個文件,今天我們來談談.pch是什麼吧。
***_Prefix.pch就是該項目的預編譯頭文件。.pch表示PreComplied Header,是一個工程要用到的來自於外部框架的頭文件列表。Xcode將會首先會編譯.pch中這些頭文件,以減少在Build整個項目的時間。通常所有的文件都自動包含了pch文件,系統在編譯每個.h, .m文件前,都先會import這個文件,而不再需要單獨編譯每個文件中的頭文件。加速了編譯過程。
如果我們不小心刪掉了.pch文件,那麼應該怎麼辦呢?自己再創建一個PCH File即可,名字可以任意取。然後再來到項目設置的Build Setting中,右上角搜索框中輸入“pch”進行查找,找到一個Prefix Header,然後輸入修改後的名字即可。如下:注意這裡是一個相對路徑。
。
。
所以有時候我們常常把很多常用的頭文件都包含到pch中,比如下面就是我的一個pch文件:
#ifndef MyPass_pch #define MyPass_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. #import AppDelegate.h #import#import AppDelegate.h #endif /* MyPass_pch */
這樣,我們就不需要在所有的.h, .m文件中包含這三個頭文件了。但是請注意!!!!!!有一個例外!!!!!
iOS項目中的AppDelegate.h文件中的#import
我在前面一篇博客《iOS定義常量的最佳實踐》中就如何在項目中定義常量進行了說明,現在有了pch文件,這也變得很方便了。我們可以在pch文件中進行#define 宏定義。然後在項目的任何位置都可以使用這個宏定義,不需要顯式的引入pch文件,非常方便。可惜是pch中不能定義const常量。。。