利用巨集定義控制nslog 的輸入輸出

2021-06-12 19:16:27 字數 659 閱讀 9555

在專案的過程中,經常遇到要在除錯的時候列印log,但是上線或是release 的時候不需要去顯示log 的情況,此時你辛辛苦苦寫了那麼多的log,你要麼就手動注釋掉,要麼就是設乙個開關變數,企圖用這個總開關開啟。其實可以充分利用巨集定義進行設定。

步驟比較簡單,只需要 在

projectname_prefix.pch

中追加你對應的巨集定義,不用import 就可以直接使用了。

巨集定義寫法如下:

#ifdef debug

#define log(...) nslog(__va_args__);

#define log_method nslog(@"%s", __func__);

#else

#define log(...); #define log_method;

#endif

這樣設定後,只需要在product ->scheme->edit scheme ->info選擇,是release ,還是debug版本即可。如果debug 版本,則答應log,若release版本則不列印。

preprocessor macros。

預設系統已經給出了debug的引數。如果要增加新的引數,則在**進行增加。

巨集定義重寫NSLog

define debug 巨集輸出函式 ifdef debug define mylog fmt,fprintf stderr,s d行 s n nsstring stringwithutf8string file lastpathcomponent utf8string line nsstring...

重寫系統NSLog 巨集定義

在程式執行過程中,通常會列印一些資訊來幫助我們跟蹤執行定位,但是程式中過多的nslog在執行過程中是非常耗記憶體的,然而使用者在使用時並需要這些追蹤資訊。弊端 1 消耗手機執行記憶體 2 不可避免的洩露一些敏感資訊 重寫nslog,debug模式下列印日誌和當前行數 if debug define ...

利用巨集控制列印

利用巨集控制列印 在程式除錯時,我們經常需要輸出一些除錯資訊,當除錯完畢後,就不再需要使用了。那怎麼快速的在除錯狀態和發布狀態切換呢?通常我們使用預編譯加巨集定義來處理這個問題,例如 ifdef debug 除錯 endif 如果我們使用printf來顯示一些除錯資訊,那麼每個地方都加上 ifdef...