使用Xcode為iOS應(yīng)用項目創(chuàng)建PCH文件的方法及應(yīng)用示例
pch 可以用來存儲共享信息,比如設(shè)備屏幕的寬度,高度。版本號等等 公用信息
Xcode 老版本會自動為我們創(chuàng)建pch文件,新版本開始不自動創(chuà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增加了一個分類,并且希望在多個文件中使用這個分類,那么就可以在PCH文件中導(dǎo)入此分類的頭文件。
在PCH文件中自定義一些有用的宏,比如代替NSLog:
#define JYLog(...) NSLog(__VA_ARGS__)
我們知道NSLog耗費性能,在調(diào)試階段完成后需要將NSLog都刪除掉,但是隨著文件的增多,NSLog則不好控制,每一個都去找很浪費時間。
此時我們可以利用宏來完成自動開啟/關(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的值會隨著Xcode中的設(shè)置改變而改變。
Edit Scheme -> Run -> Info -> Build Configuration.
Debug代表調(diào)試階段。
Release代表發(fā)布階段。
但是如果這樣做可能有潛在的危險。前面說過PCH文件的內(nèi)容會拷貝到每個文件,所以如果此時我們創(chuàng)建一個.c文件,在這個文件中同樣會拷貝PCH中的內(nèi)容,如果PCH文件中出現(xiàn)C語言不能識別的,那么很明顯會出錯。
我們希望PCH文件只在Objective-C的范圍內(nèi)有效(OC文件內(nèi)拷貝PCH文件內(nèi)容),所以需要再進行判斷:
#ifdef __OBJC__
#ifdef DEBUG
// 調(diào)試階段
#define JYLog(...) NSLog(__VA_ARGS__)
#else
// 發(fā)布階段
#define JYLog(...)
#endif
#endif
至此才能保證正確使用。
因為PCH文件的內(nèi)容會拷貝到每一個文件中,即使這個文件并未用到PCH文件的內(nèi)容。所以在使用PCH文件的時候要慎重,這可能也是Apple不再默認(rèn)創(chuàng)建它的原因吧。
- iOS Xcode8更新后輸出log日志關(guān)閉的方法
- Xcode中iOS應(yīng)用開發(fā)的一般項目目錄結(jié)構(gòu)和流程簡介
- 更新了Xcode8 及 iOS10遇到的問題小結(jié)
- iOS10 適配-Xcode8問題總結(jié)及解決方案
- Xcode8以及iOS10適配等常見問題匯總(整理篇)
- iOS10開發(fā)和Xcode 8新特性及常見問題解析
- 兼容iOS 10 升級xcode8出現(xiàn)的問題及一些適配問題的解決方案
- 針對iOS開發(fā)的一些Xcode使用技巧小結(jié)
- iOS中Xcode 8 日志輸出亂碼問題的解決方法
- 110.iOS10新特性適配教程XCode8新特性解析
- IOS Xcode調(diào)試常用命令和斷點整理
相關(guān)文章
深入講解iOS開發(fā)中的UIViewController
這篇文章主要介紹了iOS開發(fā)中的UIViewController,其中以UIViewController作為著重講解,需要的朋友可以參考下2015-09-09
iOS8調(diào)用相機報警告Snapshotting a view的解決方法
這篇文章主要介紹了iOS8調(diào)用相機報警告Snapshotting a view……的解決方法 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11

