前提:在XCode做開發(fā)調(diào)試時(shí)往往需要打印一些調(diào)試信息做debug用,大家知道當(dāng)打印信息的地方多了之后在模擬器上跑可能不會(huì)有什么問題,因?yàn)槟M器用的是電腦的硬件但是當(dāng)應(yīng)用跑在設(shè)備上時(shí)這些輸出語句會(huì)在很大程度上影響應(yīng)用的性能,針對(duì)這種問題可以寫一些宏來控制這些調(diào)試信息的輸出。
在release版本禁止輸出NSLog內(nèi)容
因?yàn)镹SLog的輸出還是比較消耗系統(tǒng)資源的,而且輸出的數(shù)據(jù)也可能會(huì)暴露出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)我們修改一個(gè)工程中某個(gè)文件代碼時(shí)候,編譯器并不是重新編譯所有所有文件,而是編譯改動(dòng)過文件的,假如pch中某個(gè)文件修改了,那么pch整個(gè)文件里包含的的其他文件也會(huì)重新編譯一次,這樣就會(huì)消耗大量時(shí)間,所以它里面添加的文件最好是是很少變動(dòng)或不變動(dòng)的頭文件或者是預(yù)編譯的代碼片段;)文件中添加
#ifdef DEBUG
#define NSLog(...) NSLog(__VA_ARGS__)
#define debugMethod() NSLog(@"%s", __func__)
#else
#define NSLog(...)
#define debugMethod()
#endif
上段代碼的意思就是 用宏指令做一個(gè)判斷,如果DEBUG為真,則編譯#ifdef到#endif宏定義,否則編譯器就不編譯;