1、pch預編譯頭檔案的利與弊
-
1.1 說明:
- .pch檔案是一個頭檔案,定義在.pch檔案中的内容能夠被項目中的其他檔案通路。
- 簡單來說,在.pch檔案中定義的弘定義會作用到項目中的所有檔案。 對于xcode6中建立工程不在自動添加.pch檔案了。
- 查了下資料,很多資料認為.pch檔案會影響效率。我到時覺得.pch檔案總體上會加速編譯,因為xcode會對.pch檔案中的定義預編譯并緩存。
- 至于為什麼會在xcode6中被踢掉,我猜是因為很多開發者使用方式不對,反而導緻減慢編譯速度了吧。
- 在Xcode6之前,建立一個新的Project,Xcode會在Supporting files檔案夾下面自動建立一個“工程名-Prefix.pch”檔案,
- 也是一個頭檔案,pch頭檔案的内容能被項目中的其他所有源檔案共享和通路,是一個預編譯頭檔案。
-
1.2 預編譯頭檔案的用途主要有:
- 存放一些全局的宏(整個項目中都用得上的宏)
- 用來包含一些全部的頭檔案(整個項目中都用得上的頭檔案)
- 能自動打開或者關閉日志輸出功能
-
1.3 弊端
- 但是!為什麼蘋果在Xcode6取消了這個功能呢,綜合考慮有以下副作用:
- 不利于代碼移植
- 如果同一份代碼需要在多個項目中使用,過度使用PCH就會帶來麻煩。
- 假設項目A中PCH加了這樣一行代碼:#import <Security/Security.h> ,而你的某個元件使用了Security,
- 将元件代碼copy到了項目B中可能編譯不了,因為項目B中的PCH并沒有添加Security.h。
- 隐式依賴關系
- 本來我們可以通過掃描xxxx.h檔案和xxxx.m檔案來找到是以來的子產品,但是濫用PCH會讓這些以來關系被掩蓋,因為檔案中可能隐式的依賴了PCH中定義的某些頭檔案。
- 是以我們應該節制的使用PCH。
2、建立流程
-
2.1 建立檔案快捷鍵Command + N,輸入pch
-
2.2 儲存
-
2.3 生成pch檔案
3、配置流程
-
3.1 查找配置位置
-
3.2 配置路徑
4、教你使用
-
4.1 避短
- 不要把絕大部分弘定義放進來。
- 公用性小的宏定義别放進來。
-
4.2 揚長
- 放置公用性高的頭檔案,比如使用率較高的fundation架構,第三方庫頭檔案。
- 為了整潔性,建立把零散的宏定義整理到某個頭檔案再将該頭檔案import入.pch檔案。
- 如果不想使用.pch檔案,我覺得可以這麼做。
- 以MVC架構為例。 比如有一些控件的category。為了擁有pch那樣的便利性又不想作用到其他不會使用它的檔案。
- 我們可以将所有view層的檔案繼承同一個父類,可以在這個父類中import所有需要用到的更view層有關的公用宏定義,fundation架構及第三方庫。
- Model層和Controller層同理。