pch檔案的使用, 標頭檔案使用, 常量(const)的定義,以及一些常用的巨集定義
一. 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。定義好常量,便於隨時修改,可以讓程式碼更整潔。
- 右擊選擇 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都說使用巨集,會消耗很多記憶體,但是並不會生成很多記憶體,巨集定義的是常量,常量都放在常量區,只會生成一份記憶體。
相關文章
- iOS開發:pch檔案中的巨集定義iOS
- C語言中的標頭檔案中的巨集定義C語言
- define巨集定義和const常量定義之間的區別
- 避免標頭檔案重複定義
- vue常量定義以及使用Vue
- mac CLion cmake 呼叫自己定義的標頭檔案Mac
- pch檔案的使用
- iOS常用巨集定義iOS
- PHP 定義常量 define 和 const的區別PHP
- vue 常量定義和使用Vue
- 第二篇:淺談自定義標頭檔案可能導致的重定義問題
- mysql 5.0 for power Desinger使用的資料庫定義檔案MySql資料庫
- extern 用法,全域性變數與標頭檔案(重複定義)變數
- Go 專案配置檔案的定義和讀取Go
- 給XML檔案定義DTDXML
- 如何定義Xsd檔案
- 使用ant巨集定義任務
- Vivado使用技巧(13):CSV檔案定義IO Ports
- Swift 裡的巨集定義Swift
- 編寫安全程式碼:不要在標頭檔案中定義變數變數
- 如何定義專案的成功標準?
- 根據Golang定義的介面生成proto檔案Golang
- Jbpm3.2 釋出定義好的流程檔案
- ios開發的巨集定義iOS
- c++中模板類的成員函式的宣告與定義應該放在標頭檔案裡C++函式
- EclipseCDT標準庫標頭檔案設定Eclipse
- IOS-如何鎖定Xcode的API標頭檔案iOSXCodeAPI
- 0x03. 使用巨集定義事件事件
- algorithm標頭檔案下的常用函式Go函式
- 巨集_變數_函式_指標_標頭檔案變數函式指標
- C語言標頭檔案的使用(轉載)C語言
- pycharm設定python標頭檔案模版PyCharmPython
- C語言巨集定義中#define中的井號#的使用C語言
- Linux一些重要的標頭檔案Linux
- C語言巨集定義##連線符和#符的使用C語言
- C++ | VS2017 C++專案配置使用的常見巨集定義C++
- iOS-日常開發常用巨集定義iOS
- php定義常量方法的區別PHP