iOS pch文件詳解 – iPhone手機開發 iPhone軟體開發教學課程

在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 不能缺少。這是因為AppDelegate.h文件是整個項目的啟動文件,比pch文件早編譯,所以AppDelegate.h中所需的頭文件不能放入pch中。

我在前面一篇博客《iOS定義常量的最佳實踐》中就如何在項目中定義常量進行瞭說明,現在有瞭pch文件,這也變得很方便瞭。我們可以在pch文件中進行#define 宏定義。然後在項目的任何位置都可以使用這個宏定義,不需要顯式的引入pch文件,非常方便。可惜是pch中不能定義const常量。。。

 

 

 

發佈留言