oc中關於pch檔案

2021-08-01 15:01:56 字數 1787 閱讀 6589

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路徑可以對照一下 這時候你會發現少了一層路徑,這是相對路徑,所有要手動的把 ...