使用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
當處于調(diào)試階段,JYLog的作用相當于NSLog,而在發(fā)布階段則JYLog的作用相當于空。這樣用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不再默認創(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)文章
iOS11 WKWebView內(nèi)容過濾規(guī)則詳解
本篇文章主要介紹了iOS11 WKWebView內(nèi)容過濾規(guī)則詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07iOS UICollectionView實現(xiàn)卡片效果
這篇文章主要為大家詳細介紹了iOS UICollectionView實現(xiàn)卡片效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-04-04iOS開發(fā)中使用UILabel設(shè)置字體的相關(guān)技巧小結(jié)
這篇文章主要介紹了iOS開發(fā)中UILabel設(shè)置字體的相關(guān)技巧小結(jié),代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2016-01-01iOS實現(xiàn)UIScrollView的無限輪播功能(原理)詳解
在現(xiàn)在的一些App中常常見到圖片輪播器,一般用于展示廣告、新聞等數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于iOS實現(xiàn)UIScrollView的無限輪播功能(原理)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下2018-09-09