1. 程式人生 > >xcode設定全域性巨集,修改NSLog列印格式

xcode設定全域性巨集,修改NSLog列印格式

問題丟擲:

 

1、系統原始的NSLog列印輸出格式,包含很多不必要的資訊,例如下圖,我們能否修改NSLog的輸出格式呢?

 

 

 

2、如果可以修改NSLog,如何使之在整個工程全域性生效?

 

問題解決:

1、可以用巨集重新定義NSLog列印函式

 

 

#ifdef DEBUG
#define NSLog(FORMAT, ...) fprintf(stderr,
"[%s:%d]\t%s\n",[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
#else
#define NSLog(...)

#endif

 

參見連結:http://my.oschina.net/shaw1688/blog/610028?fromerr=8SNm5BHz

 

2、將該巨集定義到pch檔案中,使之成為全域性巨集。由於xcode7沒有預設生成pch檔案,所有我們需要新建並新增到工程中。

 

1>、新建一個 .pch檔案

 

 

2>、在pch檔案中填入需要的全域性巨集,例如想修改NSLog的列印格式,填入以下程式碼

#ifdef DEBUG
#define NSLog(FORMAT, ...) fprintf(stderr,

"[%s:%d]\t%s\n",[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
#else
#define NSLog(...)

#endif

 

 

3>、在Build Settings中,搜尋 prefix,指定新建PrefixHeader.pch檔案的路徑

 

 

$(SRCROOT) 當前路徑下的, /PrefixHeader.pch檔案。

因為我將工程檔案.xcoderproj與.pch檔案放在了同一目錄下,所有可以直接寫為$(SRCROOT)/PrefixHeader.pch   如不在同一目錄下,需要根據實際情況指定目錄。 

 

4>、重新編譯,就可以看到列印資訊按重定義的NSLog列印輸出了