使用Xcode為iOS應(yīng)用項(xiàng)目創(chuàng)建PCH文件的方法及應(yīng)用示例
pch 可以用來存儲(chǔ)共享信息,比如設(shè)備屏幕的寬度,高度。版本號(hào)等等 公用信息
Xcode 老版本會(huì)自動(dòng)為我們創(chuàng)建pch文件,新版本開始不自動(dòng)創(chuàng)建了,如果需要使用可以自己手動(dòng)創(chuàng)建

創(chuàng)建完成后可以在里面定義常量
此處以屏幕尺寸為例
如下

代碼如下:
//獲取屏幕 寬度、高度
#define SCREEN_FRAME ([UIScreen mainScreen].applicationFrame)
#define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)
#define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height)

然后在程序中使用 可以直接 使用
CGRectMake(0,60,SCREEN_WIDTH, SCREEN_HEIGHT-60)
PCH文件的應(yīng)用舉例:
在PCH文件中存放宏就是正常的創(chuàng)建,這里不舉例了。
在PCH文件中存放頭文件經(jīng)常用于分類,比如我們給UIColor增加了一個(gè)分類,并且希望在多個(gè)文件中使用這個(gè)分類,那么就可以在PCH文件中導(dǎo)入此分類的頭文件。
在PCH文件中自定義一些有用的宏,比如代替NSLog:
#define JYLog(...) NSLog(__VA_ARGS__)
我們知道NSLog耗費(fèi)性能,在調(diào)試階段完成后需要將NSLog都刪除掉,但是隨著文件的增多,NSLog則不好控制,每一個(gè)都去找很浪費(fèi)時(shí)間。
此時(shí)我們可以利用宏來完成自動(dòng)開啟/關(guān)閉NSLog的功能。
#ifdef DEBUG
// 調(diào)試階段
#define JYLog(...) NSLog(__VA_ARGS__)
#else
// 發(fā)布階段
#define JYLog(...)
#endif
當(dāng)處于調(diào)試階段,JYLog的作用相當(dāng)于NSLog,而在發(fā)布階段則JYLog的作用相當(dāng)于空。這樣用JYLog代替NSLog就可以完成之前我們希望做的。
DEBUG的值會(huì)隨著Xcode中的設(shè)置改變而改變。
Edit Scheme -> Run -> Info -> Build Configuration.
Debug代表調(diào)試階段。
Release代表發(fā)布階段。
但是如果這樣做可能有潛在的危險(xiǎn)。前面說過PCH文件的內(nèi)容會(huì)拷貝到每個(gè)文件,所以如果此時(shí)我們創(chuàng)建一個(gè).c文件,在這個(gè)文件中同樣會(huì)拷貝PCH中的內(nèi)容,如果PCH文件中出現(xiàn)C語(yǔ)言不能識(shí)別的,那么很明顯會(huì)出錯(cuò)。
我們希望PCH文件只在Objective-C的范圍內(nèi)有效(OC文件內(nèi)拷貝PCH文件內(nèi)容),所以需要再進(jìn)行判斷:
#ifdef __OBJC__
#ifdef DEBUG
// 調(diào)試階段
#define JYLog(...) NSLog(__VA_ARGS__)
#else
// 發(fā)布階段
#define JYLog(...)
#endif
#endif
至此才能保證正確使用。
因?yàn)镻CH文件的內(nèi)容會(huì)拷貝到每一個(gè)文件中,即使這個(gè)文件并未用到PCH文件的內(nèi)容。所以在使用PCH文件的時(shí)候要慎重,這可能也是Apple不再默認(rèn)創(chuàng)建它的原因吧。
- iOS Xcode8更新后輸出log日志關(guān)閉的方法
- Xcode中iOS應(yīng)用開發(fā)的一般項(xiàng)目目錄結(jié)構(gòu)和流程簡(jiǎn)介
- 更新了Xcode8 及 iOS10遇到的問題小結(jié)
- iOS10 適配-Xcode8問題總結(jié)及解決方案
- Xcode8以及iOS10適配等常見問題匯總(整理篇)
- iOS10開發(fā)和Xcode 8新特性及常見問題解析
- 兼容iOS 10 升級(jí)xcode8出現(xiàn)的問題及一些適配問題的解決方案
- 針對(duì)iOS開發(fā)的一些Xcode使用技巧小結(jié)
- iOS中Xcode 8 日志輸出亂碼問題的解決方法
- 110.iOS10新特性適配教程XCode8新特性解析
- IOS Xcode調(diào)試常用命令和斷點(diǎn)整理
相關(guān)文章
iOS 讀取URL圖片并存儲(chǔ)到本地的實(shí)例
下面小編就為大家?guī)硪黄猧OS 讀取URL圖片并存儲(chǔ)到本地的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2017-12-12
深入講解iOS開發(fā)中的UIViewController
這篇文章主要介紹了iOS開發(fā)中的UIViewController,其中以UIViewController作為著重講解,需要的朋友可以參考下2015-09-09
iOS8調(diào)用相機(jī)報(bào)警告Snapshotting a view的解決方法
這篇文章主要介紹了iOS8調(diào)用相機(jī)報(bào)警告Snapshotting a view……的解決方法 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
iOS中長(zhǎng)條藍(lán)色按鈕(button)實(shí)現(xiàn)代碼
本文通過實(shí)例代碼給大家介紹了iOS中長(zhǎng)條藍(lán)色按鈕(button)實(shí)現(xiàn)方法,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-08-08
解決iOS UITextField 編輯時(shí)文本偏移問題
這篇文章主要介紹了解決iOS UITextField 編輯時(shí)文本偏移問題,需要的朋友可以參考下2017-05-05
解決ios手機(jī)中input輸入框光標(biāo)過長(zhǎng)的問題
在項(xiàng)目中做移動(dòng)端頁(yè)面,發(fā)現(xiàn)IOS 的光標(biāo)大小很大,和安卓的完全不一樣,怎么來調(diào)整大小呢?下面小編給大家?guī)砹薸os手機(jī)中input輸入框光標(biāo)過長(zhǎng)問題的解決方法,一起看看吧2018-08-08

