国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

使用Xcode為iOS應用項目創建PCH文件的方法及應用示例

2020-07-26 03:25:28
字體:
來源:轉載
供稿:網友

pch 可以用來存儲共享信息,比如設備屏幕的寬度,高度。版本號等等 公用信息
Xcode 老版本會自動為我們創建pch文件,新版本開始不自動創建了,如果需要使用可以自己手動創建

201632190845019.jpg (730×430)

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

201632190921105.png (841×304)

代碼如下:

復制代碼 代碼如下:

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

201632190942389.jpg (1139×659)

然后在程序中使用 可以直接 使用

復制代碼 代碼如下:

CGRectMake(0,60,SCREEN_WIDTH, SCREEN_HEIGHT-60)

PCH文件的應用舉例:
在PCH文件中存放宏就是正常的創建,這里不舉例了。
在PCH文件中存放頭文件經常用于分類,比如我們給UIColor增加了一個分類,并且希望在多個文件中使用這個分類,那么就可以在PCH文件中導入此分類的頭文件。
在PCH文件中自定義一些有用的宏,比如代替NSLog:
#define JYLog(...)  NSLog(__VA_ARGS__)
我們知道NSLog耗費性能,在調試階段完成后需要將NSLog都刪除掉,但是隨著文件的增多,NSLog則不好控制,每一個都去找很浪費時間。
此時我們可以利用宏來完成自動開啟/關閉NSLog的功能。
復制代碼 代碼如下:

#ifdef DEBUG

// 調試階段
#define JYLog(...)  NSLog(__VA_ARGS__)

#else

// 發布階段
#define JYLog(...)

#endif


當處于調試階段,JYLog的作用相當于NSLog,而在發布階段則JYLog的作用相當于空。這樣用JYLog代替NSLog就可以完成之前我們希望做的。
DEBUG的值會隨著Xcode中的設置改變而改變。
Edit Scheme -> Run -> Info -> Build Configuration.
Debug代表調試階段。
Release代表發布階段。
但是如果這樣做可能有潛在的危險。前面說過PCH文件的內容會拷貝到每個文件,所以如果此時我們創建一個.c文件,在這個文件中同樣會拷貝PCH中的內容,如果PCH文件中出現C語言不能識別的,那么很明顯會出錯。
我們希望PCH文件只在Objective-C的范圍內有效(OC文件內拷貝PCH文件內容),所以需要再進行判斷:
復制代碼 代碼如下:

#ifdef __OBJC__

#ifdef DEBUG

// 調試階段
#define JYLog(...)  NSLog(__VA_ARGS__)

#else

// 發布階段
#define JYLog(...)

#endif

#endif


至此才能保證正確使用。
因為PCH文件的內容會拷貝到每一個文件中,即使這個文件并未用到PCH文件的內容。所以在使用PCH文件的時候要慎重,這可能也是Apple不再默認創建它的原因吧。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 澎湖县| 安远县| 额济纳旗| 浑源县| 漳平市| 台江县| 和静县| 新晃| 成安县| 利川市| 平顶山市| 仪征市| 湄潭县| 静乐县| 南投市| 云阳县| 鄂托克前旗| 阿尔山市| 南昌县| 海晏县| 锡林郭勒盟| 弥渡县| 大化| 和硕县| 渭南市| 乐都县| 长顺县| 忻城县| 大邑县| 桂东县| 梅河口市| 池州市| 崇礼县| 谢通门县| 盐津县| 昔阳县| 彭山县| 南宁市| 军事| 湘西| 丹江口市|