1. 程式人生 > >利用巨集定義控制nslog 的輸入輸出

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


       在專案的過程中,經常遇到要在除錯的時候列印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版本則不列印。

我們釋出到appstore 上的版本均是release版本,這裡簡單說下這兩個版本的差異。
       release 是發行版本,比debug版本要小一些,他們呼叫兩個不同底層庫,debug 包含的資訊多,可以斷點除錯,單步執行,使用使用TRACE/ASSERT等除錯輸出語句,
但是release 版本不包含除錯資訊,執行速度比較快。
另外在此處設定的DEBUG 引數可以在下面的路徑進行設定:工程->Target->Build Setting ->
Preprocessor Macros。預設系統已經給出了DEBUG的引數。如果要增加新的引數,則在哪裡進行增加。