前提:在XCode做開發(fā)調(diào)試時(shí)往往需要打印一些調(diào)試信息做debug用赵誓,大家知道當(dāng)打印信息的地方多了之后在模擬器上跑可能不會有什么問題戳稽,因?yàn)槟M器用的是電腦的硬件但是當(dāng)應(yīng)用跑在設(shè)備上時(shí)這些輸出語句會在很大程度上影響應(yīng)用的性能沿后,針對這種問題可以寫一些宏來控制這些調(diào)試信息的輸出闯参。
在release版本禁止輸出NSLog內(nèi)容
因?yàn)镹SLog的輸出還是比較消耗系統(tǒng)資源的,而且輸出的數(shù)據(jù)也可能會暴露出App里的保密數(shù)據(jù)寸莫,所以發(fā)布正式版時(shí)需要把這些輸出全部屏蔽掉捺萌。
我們可以在發(fā)布版本前先把所有NSLog語句注釋掉,等以后要調(diào)試時(shí)储狭,再取消這些注釋互婿,這實(shí)在是一件無趣而耗時(shí)的事!還好辽狈,還有更優(yōu)雅的解決方法慈参,就是在項(xiàng)目的prefix.pch文件里加入下面一段代碼,加入后刮萌,NSLog就只在Debug下有輸出驮配,Release下不輸出了。
如何實(shí)現(xiàn):
在-Prefix.pch(pch全稱是“precompiled header”着茸,也就是預(yù)編譯頭文件壮锻,該文件里存放的工程中一些不常被修改的代碼,比如常用的框架頭文件涮阔,這樣做的目的提高編譯器編譯速度猜绣。我們知道當(dāng)我們修改一個工程中某個文件代碼時(shí)候,編譯器并不是重新編譯所有所有文件敬特,而是編譯改動過文件的掰邢,假如pch中某個文件修改了,那么pch整個文件里包含的的其他文件也會重新編譯一次伟阔,這樣就會消耗大量時(shí)間辣之,所以它里面添加的文件最好是是很少變動或不變動的頭文件或者是預(yù)編譯的代碼片段;)文件中添加
#ifdef DEBUG
#define NSLog(...) NSLog(__VA_ARGS__)
#define debugMethod() NSLog(@"%s", __func__)
#else
#define NSLog(...)
#define debugMethod()
#endif
上段代碼的意思就是 用宏指令做一個判斷皱炉,如果DEBUG為真怀估,則編譯#ifdef到#endif宏定義,否則編譯器就不編譯合搅;