自動(dòng)控制NSLog的輸出打印小技巧

前提:在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宏定義,否則編譯器就不編譯;

以上純內(nèi)容純屬復(fù)制粘貼,如有雷同,對(duì),沒錯(cuò),就是抄你的!謝謝!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 不直接用NSLog 摘要: 公司中不直接使用NSLog,而是利用宏定義自己的打印函數(shù),將該打印函數(shù)寫在項(xiàng)目的.pc...
    ttdiOS閱讀 772評(píng)論 2 7
  • 一.統(tǒng)計(jì)應(yīng)用中代碼的總行數(shù) 每一個(gè)程序員都想在開發(fā)完成之后知道總共寫了多少行的代碼,這里有一個(gè)比較簡單的方法。 1...
    小霍同學(xué)閱讀 1,431評(píng)論 0 0
  • 前提:在XCode做開發(fā)調(diào)試時(shí)往往需要打印一些調(diào)試信息做debug用,大家知道當(dāng)打印信息的地方多了之后在模擬器上...
    青春已給下一代閱讀 1,599評(píng)論 0 1
  • 前提:在XCode做開發(fā)調(diào)試時(shí)往往需要打印一些調(diào)試信息做debug用,大家知道當(dāng)打印信息的地方多了之后在模擬器上跑...
    zfl1024閱讀 3,185評(píng)論 1 1
  • PCH介紹 PCH文件,是一個(gè)預(yù)編譯文件,常用來處理頭文件引用,宏定義等。開發(fā)過程中,一般將整個(gè)工程都使用的頭文件...
    暴走碼農(nóng)閱讀 841評(píng)論 0 2

友情鏈接更多精彩內(nèi)容