PCH 作用
**預編譯頭** :編譯一次,後續文件複用,加速構建。包含**全項目通用的頭文件、宏定義、常量**。
建議放入 PCH
- 系統框架頭文件:``、``。
- 項目通用第三方庫頭文件:`AFNetworking.h`、`Masonry.h`、`SDWebImage.h`。
- **極少變動** 的全局宏/常量:`#define APP_VERSION @"1.0"`、`#define kScreenWidth [UIScreen mainScreen].bounds.size.width`。
不建議放入 PCH
- 頻繁修改的宏/頭文件 → 導致全項目重新編譯,拖慢構建。
- 業務邏輯相關頭文件 (Model、Service、ViewController) → 耦合度高、命名空間污染。
- 大量宏定義 → 建議抽離到 **`GlobalConstants.h` / `Macros.h`** 獨立文件,在 PCH 中 `#import "GlobalConstants.h"`。
效率影響
- PCH 內容越多 → 預編譯耗時越長 → **項目啟動/首次構建越慢**。
- 增量構建時,PCH 未變則不重新編譯,**修改 PCH 觸發全量重編譯**。
最佳實踐
- 創建 `GlobalConstants.h` 存放所有宏、常量、通用枚舉。
- PCH 僅導入系統框架、穩定第三方庫、`GlobalConstants.h`。
- 業務模塊按需 `#import` 具體頭文件,不依賴 PCH 隱式引入。
- Swift 項目無 PCH,用 **Bridging Header** 導入 OC 頭文件,常量定義在 `Constants.swift` (struct/enum)。