自訂 NSLog以便發版和調試,自訂nslog調試

來源:互聯網
上載者:User

自訂 NSLog以便發版和調試,自訂nslog調試
問題

  • 開發中用了大量的 NSLog,但是發布時想取消這些 NSLog
  • 開發中是否經常用過 NSLog(@"%s", __FUNCTION__);
解決問題
  • 建立 ExtendNSLog 類,繼承自 NSObject
  • 在 ExtendNSLog.h 中刪除預設代碼
  • 添加以下函式宣告:
void ExtendNSLog(const char *file, int lineNumber, const char *functionName, NSString *format, ...);
  • 在 ExtendNSLog.m 中刪除預設代碼
  • 添加以下代碼實現:
 1 void ExtendNSLog(const char *file, int lineNumber, const char *functionName, NSString *format, ...) { 2  3     va_list ap; 4  5     va_start(ap, format); 6  7     if (![format hasSuffix: @"\n"]) { 8         format = [format stringByAppendingString: @"\n"]; 9     }10 11     NSString *body = [[NSString alloc] initWithFormat:format arguments:ap];12 13     va_end(ap);14 15     NSString *fileName = [[NSString stringWithUTF8String:file] lastPathComponent];16     fprintf(stderr, "(%s) (%s:%d) %s",17             functionName,18             [fileName UTF8String],19             lineNumber,20             [body UTF8String]);21 }
  • 建立 PrefixHeader.pch 檔案
  • 輸入以下內容:
 1 #ifdef __OBJC__ 2  3 #import <UIKit/UIKit.h> 4 #import <Foundation/Foundation.h> 5  6 #import "ExtendNSLog.h" 7  8 #ifdef DEBUG 9 #define NSLog(args...) ExtendNSLog(__FILE__, __LINE__, __PRETTY_FUNCTION__, args);10 #else11 #define NSLog(x...)12 #endif13 14 #endif
  • 選擇 項目->TARGETS->[ProjectName]->Build Settings
  • 在搜尋方塊輸入 prefix header
  • 在 Prefix Header中輸入 [ProjectName]/PrefixHeader.pch

如所示

  • 運行測試,如修改運行模式

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.