NSLog設置不打印

  在調試應用程序的時候常常須要進行打印須要的信息,可是當打印的地方多了以後在真機上跑應用程序就會相應的慢不少,輸出語句多了以後會在很大程序上影響應用程序的性能。這裏咱們能夠定義一個宏來控制是否輸出調試信息。微信

 在Release模式下禁止輸出調試信息

  由於NSLog的輸出仍是比較消耗系統資源的,並且輸出的數據也可能會暴露出App裏的保密數據,因此發佈正式版時須要把這些輸出所有屏蔽掉。app

  咱們能夠在發佈版本前先把全部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宏定義,不然編譯器就不編譯;ui

  DEBUG設置的位置

在 「Target > Build Settings > Preprocessor Macros > Debug」 裏有一個」DEBUG=1」。

  設置爲Debug模式下,Product→Scheme→SchemeEdit Scheme設置Build Configuration成Debug時,就能夠打印nslog了。設置Release,發佈app版本的時候就不會打印了,提升了性能。spa

 

 

 

 

文章參考自微信公衆號:iOS開發debug

相關文章
相關標籤/搜索