pch檔案的使用, 標頭檔案使用, 常量(const)的定義,以及一些常用的巨集定義

小毅哥哥發表於2017-08-12

一. pch檔案的建立

1. 右擊選擇 New File,出現下面介面,選擇 iOS ->other->PCH File->next

建立

2. 點選create,就會生成一個pch檔案

這裡寫圖片描述

3. 點選左側欄中的工程名,顯示如下介面,然後通過在搜尋欄裡查詢Prefix Header檔案,快速定位到pch,然後按照下面方式操作

這裡寫圖片描述

4. 填寫路徑

將pch檔案拖進第三步彈出的框裡面,pch的檔案路徑就會被填進去,但是這是絕對路徑,如果你把專案移到另外一個地方,就會報錯,找不到pch檔案,所以需要把它轉為相對路徑,絕對路徑格式:/Users/lixue/Desktop/專案名/專案名/PrefixHeader.pch,轉化為相對路徑
如下格式:   $(SRCROOT) /專案名稱/pch檔名(注意這裡只有一個專案名)

這裡寫圖片描述

5. 將下面的屬性設定為yes

這裡寫圖片描述

6. 完成

新增完成後 就可以在pch檔案中定義巨集等 新增完成以後 command + b 預編譯就好了;

  預編譯後的pch檔案會被快取起來,可以提高編譯速度

這裡寫圖片描述







二. 標頭檔案 ( Headerfile.h )

為了簡潔程式碼,主要放一些 巨集定義 :
#define LOADING_STR @"正在載入"

1. 右擊選擇 New File,出現下面介面,選擇 iOS ->Source->Header File->next

這裡寫圖片描述

2. 點選create,就會生成一個.h檔案

這裡寫圖片描述

3. 在 .h 檔案中寫巨集定義程式碼

這裡寫圖片描述

4. 在 .pch 檔案中匯入標頭檔案使用即可

這裡寫圖片描述







三. 貫穿整個工程的全域性常量定義( const )

  • 繼承於NSObject的類
  • 一般來說總會有用到常量定義的地方,比如一個公共的url頭,一個固定的id。定義好常量,便於隨時修改,可以讓程式碼更整潔。
  1. 右擊選擇 New File,出現下面介面,選擇 iOS ->Source->Header File->next
    這裡寫圖片描述

2. 選擇 NSObject 型別

這裡寫圖片描述

3. 修改 .h 檔案程式碼

這裡寫圖片描述

4. 修改 .m 檔案程式碼

這裡寫圖片描述

5. import 進 .pch 檔案中,或者在需要使用的 VC 中 import ,然後使用即可

這裡寫圖片描述


  • 可以直接用define來定義,也可以用extern關鍵字來定義,這樣利於NSString的使用
  • define是不需要.m檔案的,在標頭檔案裡定義好了就可以直接用,標頭檔案中用extern定義的常量需要在.m檔案中定義具體代表什麼字串

6. 優點

  • 使用const修飾的,在記憶體中就只有一份,那麼無論你在專案中的哪裡使用,都是這一份,所以強烈推薦使用
  • 使用巨集的話:巨集是在編譯的時候 將我們定義的巨集的內容,直接編譯成我們寫的字串,那麼可能存在多次建立,多次呼叫的。

注意
有些時候,const還是不能替代巨集的,因為const後面接的內容不能是通過一些計算出來的結果,而是一些死的東西,比如:

// RGB顏色
#define ZYColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0]

// 隨機色
#define ZYRandomColor HWColor(arc4random_uniform(256), arc4random_uniform(256), arc4random_uniform(256))







四. 巨集與const的區別

  • 編譯時刻:  巨集是預編譯(編譯之前處理),const是編譯階段。
  • 編譯檢查: 巨集不做檢查,不會報編譯錯誤,只是替換,const會編譯檢查,會報編譯錯誤。
  • 巨集的好處: 巨集能定義一些函式,方法。 const不能。
  • 巨集的壞處: 使用大量巨集,容易造成編譯時間久,每次都需要重新替換。

注意:很多Blog都說使用巨集,會消耗很多記憶體,但是並不會生成很多記憶體,巨集定義的是常量,常量都放在常量區,只會生成一份記憶體。

相關文章