ios开发之.pch文件的使用
案例:開源中國iOS客戶端? ?? ? 當(dāng)我們新建一個(gè)工程的時(shí)候,在Supporting FIles文件下會(huì)看到一個(gè)以??-Prefix.pch結(jié)尾文件的文件,pch全稱是“precompiled header”,也就是預(yù)編譯頭文件,該文件里存放的工程中一些不常被修改的代碼,比如常用的框架頭文件,這樣做的目的提高編譯器編譯速度。我們知道當(dāng)我們修改一個(gè)工程中某個(gè)文件代碼時(shí)候,編譯器并不是重新編譯所有所有文件,而是編譯改動(dòng)過文件的,假如pch中某個(gè)文件修改了,那么pch整個(gè)文件里包含的的其他文件也會(huì)重新編譯一次,這樣就會(huì)消耗大量時(shí)間,所以它里面添加的文件最好是是很少變動(dòng)或不變動(dòng)的頭文件或者是預(yù)編譯的代碼片段;
在新建一個(gè)工程時(shí),pch后綴文件里代碼是
或許你會(huì)覺得這預(yù)編譯代碼很少,但是你可以查看一下UIKit.h的定義文件中
這些不少了吧,工程每次運(yùn)行都編譯是不是很費(fèi)時(shí)間,這些是蘋果公司內(nèi)部定義的標(biāo)準(zhǔn)頭文件,我們不能也沒有權(quán)限修改這些頭文件定義內(nèi)容,所以,當(dāng)放到pch文件中會(huì)加速編譯過程;
再來看看我們開源中國iOS客戶端pch文件
我們看到有這樣些文件也被添加到里面,可能會(huì)想難道這些頭文件變化不大嗎?
其實(shí),這些文件特殊之處在于他們都是第三方類庫的頭文件,第三方類庫將一些對(duì)象進(jìn)行高度封裝,留下接口,然后我們根據(jù)類庫接口直接調(diào)用就可以,這些第三方類庫一般都比iOS原生自帶的更加簡單易用,比如TBXML解析庫,比iOS自帶的NSXMLPaser解析器速度功能上都會(huì)好一些;
還有一些宏定義都是比較常用方式的宏定義,比如定義的開源中國社區(qū)的api接口,這些接口變得當(dāng)然很少了;
然后就剩下最后面的
工程有Debug Version和Release Version,Debug Version是程序開發(fā)過程中版本,它包含了所有調(diào)試信息,一些常用的NSLog打印日志,在程序調(diào)試過程工根據(jù)我們?cè)O(shè)置的調(diào)試信息可以看出什么地方出錯(cuò),我們?cè)谶\(yùn)行運(yùn)行一個(gè)小程序的時(shí)候,會(huì)不會(huì)首先就想到進(jìn)行斷點(diǎn)調(diào)試呢,應(yīng)該是首先想著NSLog一下,看看哪個(gè)函數(shù)方法沒執(zhí)行,看看是不是哪個(gè)數(shù)組的值沒取出來。Release Version是發(fā)布版本,不打印NSLog可以加快程序運(yùn)行速度,減少內(nèi)存使用。? ?但是到一個(gè)大工程中,會(huì)有很多很多這樣的NSLog,在我們工程完美運(yùn)行的時(shí)候,發(fā)布Release 版本的時(shí)候,難道我們?nèi)ヒ恍行械淖⑨屨{(diào)NSLog嗎?假如工程現(xiàn)在原來基礎(chǔ)上發(fā)布一個(gè)version 1.2版本的,我們?cè)谛薷某绦虻臅r(shí)候豈不是還把原來注釋給取消,那就很麻煩很麻煩了。
所以,此處用到了宏指令
上段代碼的意思就是 用宏指令做一個(gè)判斷,如果DEBUG為真,則編譯#ifdef到#endif宏定義,否則編譯器就不編譯;
這個(gè)DEBUG在哪設(shè)置呢,
在 "Target > Build Settings > Preprocessor Macros > Debug" 里有一個(gè)"DEBUG=1"。
現(xiàn)在我們來做一個(gè)測試:
取一個(gè)宏指令放到OSAppDelegate.m的application:didFinishLaunchingWithOptions:方法中,并用同一個(gè)NSLog做一個(gè)對(duì)比;
NSLog(@"%s", __func__);
debugMethod();
首先設(shè)置為Debug模式下,Product-->Edit Scheme
跳轉(zhuǎn)到這個(gè)界面
當(dāng)我設(shè)置Build Configuration成Debug時(shí),打印效果圖
當(dāng)我設(shè)置Build Configuration成Release的,打印時(shí)效果圖
當(dāng)Run??Test??Profile??Analyze??Archive的時(shí)候,都可以根據(jù)需要設(shè)置Debug和Release兩個(gè)模式運(yùn)行;
所以我們完全可以用一個(gè)宏指令來設(shè)置是否打印調(diào)試信息;
轉(zhuǎn)載于:https://www.cnblogs.com/xubojoy/p/3934653.html
總結(jié)
以上是生活随笔為你收集整理的ios开发之.pch文件的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设备树下的platform 驱动编写
- 下一篇: 酷应用背后,低代码正在被重估