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都說使用巨集,會消耗很多記憶體,但是並不會生成很多記憶體,巨集定義的是常量,常量都放在常量區,只會生成一份記憶體。
相關文章
- C語言中的標頭檔案中的巨集定義C語言
- mac CLion cmake 呼叫自己定義的標頭檔案Mac
- vue常量定義以及使用Vue
- 為什麼不在標頭檔案做定義
- PHP 定義常量 define 和 const的區別PHP
- Vivado使用技巧(13):CSV檔案定義IO Ports
- vue 常量定義和使用Vue
- Go 專案配置檔案的定義和讀取Go
- 給XML檔案定義DTDXML
- extern 用法,全域性變數與標頭檔案(重複定義)變數
- openGauss libpq使用依賴的標頭檔案
- C++ | VS2017 C++專案配置使用的常見巨集定義C++
- 如何定義專案的成功標準?
- 根據Golang定義的介面生成proto檔案Golang
- pycharm設定python標頭檔案模版PyCharmPython
- 巨集定義
- c++中模板類的成員函式的宣告與定義應該放在標頭檔案裡C++函式
- algorithm標頭檔案下的常用函式Go函式
- 易優CMS模板標籤assign定義變數模板檔案中定義變數,可在其他標籤裡使用該變數變數
- C語言關於標頭檔案的使用C語言
- 巨集_變數_函式_指標_標頭檔案變數函式指標
- 0x03. 使用巨集定義事件事件
- C語言巨集定義中#define中的井號#的使用C語言
- linux下使用windows標頭檔案LinuxWindows
- Xcode 新增PCH檔案XCode
- springboot如何使用自定義配置檔案Spring Boot
- 使用stub快速生成自定義檔案
- php定義常量方法的區別PHP
- iOS-日常開發常用巨集定義iOS
- 標頭檔案的作用分析
- 一些亂七八糟的概念以及定義
- 【C進階】21、巨集定義與使用分析
- 在 MotionScene 檔案中定義場景約束
- php變數的型別是如何轉換的?常量如何定義?系統常量是如何定義的?PHP變數型別
- Angular tsconfig.json 檔案裡的 paths 用法和 scoped module 定義AngularJSON
- iOS標頭檔案中如何在巨集裡引用已有的巨集iOS
- OmniMarkupPreviewer 使用自定義的瀏覽器預覽markdown檔案View瀏覽器
- C++中巨集定義#define的用法C++
- 變數的定義和使用變數