pch 可以用來儲存共享資訊,比如裝置螢幕的寬度,高度。版本號等等 公用資訊
xcode 老版本會自動為我們建立pch檔案,新版本開始不自動建立了,如果需要使用可以自己手動建立
建立完成後可以在裡面定義常量
此處以螢幕尺寸為例
如下
**如下:
複製**
**如下:
//獲取螢幕 寬度、高度
然後在程式中使用 可以直接 使用
複製**
**如下:
cgrectmake(0,60,screen_width, screen_height-60)
pch檔案的應用舉例:
在pch檔案中存放巨集就是正常的建立,這裡不舉例了。
在pch檔案中存放標頭檔案經常用於分類,比如我們給uicolor增加了乙個分類,並且希望在多個檔案中使用這個分類,那麼就可以在pch檔案中匯入此分類的標頭檔案。
在pch檔案中自定義一些有用的巨集,比如代替nslog:
#define jylog(...) nslog(__va_args__)
我們知道nslog耗費效能,在除錯階段完成後需要將nslog都刪除掉,但是隨著檔案的增多,nslog則不好控制,每乙個都去找很浪費時間。
此時我們可以利用巨集來完成自動開啟/關閉nslog的功能。
複製**
**如下:
#ifdef debug
// 除錯階段
#define jylog(...) nslog(__va_args__)
#else
// 發布階段
#define jylog(...)
#endif
當處於除錯階段,jylog的作用相當於nslog,而在發布階段則jylog的作用相當於空。這樣用jylog代替nslog就可以完成之前我們希望做的。
debug的值會隨著xcode中的設定改變而改變。
edit scheme -> run -> info -> build configuration.
debug代表除錯階段。
release代表發布階段。
但是如果這樣做可能有潛在的危險。前面說過pch檔案的內容會拷貝到每個檔案,所以如果此時我們建立乙個.c檔案,在這個檔案中同樣會拷貝pch中的內容,如果pch檔案中出現c語言不能識別的,那麼很明顯會出錯。
我們希望pch檔案只在objective-c的範圍內有效(oc檔案內拷貝pch檔案內容),所以需要再進行判斷:
複製**
**如下:
#ifdef __objc__
#ifdef debug
// 除錯階段
#define jylog(...) nslog(__va_args__)
#else
// 發布階段
#define jylog(...)
#endif
#endif
至此才能保證正確使用。
oc的header和pch檔案
header.h ifndef header h define header h pragma mark 螢幕寬度 define screen width uiscreen mainscreen bounds.size.width endif prefixheader.pch ifndef pref...
關於 pch 預編譯標頭檔案
預編譯標頭檔案 預編譯標頭檔案 一般擴充套件名為.pch 是把乙個工程中較穩定的 預先編譯好放在乙個檔案 pch 裡.這些預先編譯好的 可以是任何的c c 甚至可以是inline函式,只它們在整個工程中是較為穩定的,即在工程開發過程中不會經常被修改的 為什麼需要預編譯標頭檔案?一言以蔽之 提高編譯速...
增加PCH檔案
前沿 xcode6中去掉了pch,為了一些瑣碎的標頭檔案引用,加快了 編譯速度!xcode6之前的版本建專案就自動新增了是這樣的 xcode6後的版本要自己手動的新增步驟如下 這樣就ok了!可能遇到問題 沒有正確的配置pch路徑可以對照一下 這時候你會發現少了一層路徑,這是相對路徑,所有要手動的把 ...