在release版本禁止輸出NSLog內容

2021-07-09 19:07:21 字數 1164 閱讀 6171

前提:在xcode做開發除錯時往往需要列印一些除錯資訊做debug用,

大家知道當列印資訊的地方多了之後在模擬器上跑可能不會有什麼問題,

因為模擬器用的是電腦的硬體但是當應用跑在裝置上時這些輸出語句會在很大程度上影響應用的效能,

針對這種問題可以寫一些巨集來控制這些除錯資訊的輸出。

在release版本禁止輸出nslog內容

所以發布正式版時需要把這些輸出全部遮蔽掉。

我們可以在發布版本前先把所有nslog語句注釋掉,等以後要除錯時,再取消這些注釋,

這實在是一件無趣而耗時的事!還好,還有更優雅的解決方法,

就是在專案的prefix.pch檔案裡加入下面一段**,加入後,nslog就只在debug下有輸出,

release下不輸出了。

如何實現:

在-prefix.pch(pch全稱是「precompiled header」,也就是預編譯標頭檔案,

該檔案裡存放的工程中一些不常被修改的**,比如常用的框架標頭檔案,

這樣做的目的提高編譯器編譯速度。我們知道當我們修改乙個工程中某個檔案**時候,

編譯器並不是重新編譯所有所有檔案,而是編譯改動過檔案的,假如pch中某個檔案修改了,

那麼pch整個檔案裡包含的的其他檔案也會重新編譯一次,這樣就會消耗大量時間,

所以它裡面新增的檔案最好是是很少變動或不變動的標頭檔案或者是預編譯的**片段;)

檔案中新增

#ifdef debug

#define nslog(...) nslog(__va_args__)

#define debugmethod() nslog(@"%s", __func__)

#else

#define nslog(...)

#define debugmethod()

#endif

上段**的意思就是 用巨集指令做乙個判斷,如果debug為真,則編譯#ifdef到#endif巨集定義,否則編譯器就不編譯;

這個debug在哪設定呢

在 「target > build settings > preprocessor macros > debug」 裡有乙個」debug=1」。

設定為debug模式下,product→scheme→schemeedit scheme設定build configuration成debug時,

在Release版本中進行除錯

在release版本中進行除錯 許多開發人員在利用visual c 6.0開發程式時,經常會遇到程式在debug版本中能夠正常執行,但是在release版本中就會出現問題的情況。為了在release版本中發現和解決問題,需要在release版本中除錯程式,可是release版本卻不支援除錯,這該怎麼...

如何移除發布版本中的NSLog輸出

phone開發中會經常使用nslog將一些執行資訊輸出到終端,特別是出於除錯的目的。但是實際的發布版本通常是不需要任何終端輸出的。對於iphone應用,這種終端輸出的成本跟高。為了在發布版本中的移除nslog輸出也有幾種辦法。常見的一種就是定義乙個debug之類的常量進行nslog相關 的條件編譯。...

xCode在release版本中去掉除錯資訊

開發過程中使用的 nslog assert 和nsassert 之類的東西在release版本裡如何去掉?nslog沒有預處理巨集來控制開啟關閉,可以在工程的pch檔案裡自己控制。ifdef debug define log nslog va args define log current meth...