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,
#else
#define NSLog(...)
#endif
3>、在Build Settings中,搜尋 prefix,指定新建PrefixHeader.pch檔案的路徑
$(SRCROOT) 當前路徑下的, /PrefixHeader.pch檔案。
因為我將工程檔案.xcoderproj與.pch檔案放在了同一目錄下,所有可以直接寫為$(SRCROOT)/PrefixHeader.pch 如不在同一目錄下,需要根據實際情況指定目錄。
4>、重新編譯,就可以看到列印資訊按重定義的NSLog列印輸出了