Release釋出log遮蔽方法
在開發過程中一般會用到NSLog(<#NSString *format, ...#>)來獲得具體的資訊。
但當我們釋出app時,一步一步的去找NSLog(<#NSString *format, ...#>),並遮蔽掉,這樣比較浪費時間還很累。我們可以採用預編譯的方式來簡化這個問題。
在***-Prefix.pch裡面新增
#define DEBUG_MODE
#ifdef DEBUG_MODE
#define DebugLog( s, ... ) NSLog( @"<%@:(%d)> %@", [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] )
#else
#define DebugLog( s, ... )
#endif
這樣當我們需要列印log時採用DebugLog( s, ... ),就可以了。如果我們需要打release版本就直接登出掉#define
DEBUG_MODE,就可以了。
這裡有幾個巨集 ##__VA_ARGS__, __FILE__, __LINE__ 和__FUNCTION__,下面介紹一下:
1) __VA_ARGS__ 是一個可變引數的巨集,很少人知道這個巨集,這個可變引數的巨集是新的C99規範中新增的,目前似乎只有gcc支援(VC6.0的編譯器不支援)。巨集前面加上##的作用在於,當可變引數的個數為0時,這裡的##起到把前面多餘的","去掉的作用,否則會編譯出錯, 你可以試試。
2) __FILE__ 巨集在預編譯時會替換成當前的原始檔名
3) __LINE__巨集在預編譯時會替換成當前的行號
4) __FUNCTION__巨集在預編譯時會替換成當前的函式名稱
1) __VA_ARGS__ 是一個可變引數的巨集,很少人知道這個巨集,這個可變引數的巨集是新的C99規範中新增的,目前似乎只有gcc支援(VC6.0的編譯器不支援)。巨集前面加上##的作用在於,當可變引數的個數為0時,這裡的##起到把前面多餘的","去掉的作用,否則會編譯出錯, 你可以試試。
2) __FILE__ 巨集在預編譯時會替換成當前的原始檔名
3) __LINE__巨集在預編譯時會替換成當前的行號
4) __FUNCTION__巨集在預編譯時會替換成當前的函式名稱
舉個例子特別說明一下...和__VA_ARGS__
實現思想就是巨集定義中引數列表的最後一個引數為省略號(也就是三個點)。這樣預定義巨集_ _VA_ARGS_ _就可以被用在替換部分中,替換省略號所代表的字串。比如:
#define PR(...) printf(__VA_ARGS__)
int main()
{
int wt=1,sp=2;
PR("hello\n");
PR("weight = %d, shipping = %d",wt,sp);
return 0;
}
輸出結果:
hello
weight = 1, shipping = 2
省略號只能代替最後面的巨集引數。
#define W(x,...,y)錯誤!
實現思想就是巨集定義中引數列表的最後一個引數為省略號(也就是三個點)。這樣預定義巨集_ _VA_ARGS_ _就可以被用在替換部分中,替換省略號所代表的字串。比如:
#define PR(...) printf(__VA_ARGS__)
int main()
{
int wt=1,sp=2;
PR("hello\n");
PR("weight = %d, shipping = %d",wt,sp);
return 0;
}
輸出結果:
hello
weight = 1, shipping = 2
省略號只能代替最後面的巨集引數。
#define W(x,...,y)錯誤!
相關文章
- Maven Release釋出指南---Git版MavenGit
- flutter 釋出release版的流程(android)FlutterAndroid
- OpenHarmony v3.1 Release版本釋出
- 利用github Actions釋出npm和releaseGithubNPM
- Apache Doris 1.2.2 Release 版本正式釋出Apache
- Apache Doris 1.2.4 Release 版本正式釋出|版本通告Apache
- OpenHarmony 4.1 Release版本正式釋出,邀您體驗
- Postgres-XL 10R1 release版本釋出
- Win10 Build 19044.1806 Release預覽版釋出Win10UI
- 更穩定!Apache Doris 1.2.1 Release 版本正式釋出Apache
- Win11 Build 22000.917 Release預覽版釋出UI
- Spring Boot整合Spring Cloud Release進行版本釋出管理Spring BootCloud
- 微軟Win10 Build 19044.1947 Release預覽版釋出微軟Win10UI
- 全面進化!Apache Doris 1.2.0 Release 版本正式釋出|版本通告Apache
- 如何做好 Release Plan 來完成一次完美的釋出
- Log4Shell 更新:第二個 log4j 漏洞已釋出 - lunasec
- DevEco Device Tool 3.0 Release 新版本釋出,支援多人共享開發dev
- [BUG反饋]後臺釋出的文章中帶的程式碼,釋出後會被遮蔽是為什麼
- 未來已來,OpenHarmony 3.2 Release釋出,邁入發展新階段
- 無需等待Vue Release釋出,就能在專案中體驗最新版Vue
- ChunJun 1.16 Release版本即將釋出,bug 捉蟲活動邀您參與!
- 業界率先支援 MCP-OVER-XDS 協議,Nacos 2.0.1 + 1.4.2 Release 正式釋出協議
- DevEco Device Tool 3.1 Release新版本釋出,新增資源管理器、SFTP、HDCdevFTP
- 微信支付 V3 的 Java 實現 Payment Spring Boot-1.0.7.RELEASE 釋出JavaSpring Boot
- Spring Boot釋出2.6.2、2.5.8:升級log4j2到2.17.0Spring Boot
- Math.log2() 方法
- Math.log10() 方法
- Git開發、釋出、缺陷分離模型概述(支援master/develop/feature/release/hotfix型別分支)Git模型ASTdev型別
- 快播王欣推匿名社交APP馬桶MT 尚未釋出就遭微信遮蔽APP
- 【IDL】IDL程式釋出方法總結
- 第一週-20200222-PG12.2 release版本釋出了
- 除了GET方法,新的HTTP QUERY方法規範釋出HTTP
- win10怎麼遮蔽核顯 win10筆記本遮蔽核顯操作方法Win10筆記
- win10輸入法遮蔽如何恢復_win10遮蔽輸入法處理方法Win10
- Log4j 掃描器釋出;微信 PC 端開始支援自動登入;GitLab 14.6 釋出 | 思否週刊Gitlab
- Mysql系統變數中 log_error_services | log_filter_internal; log_sink_internal 和 log_error_verbosity | 2 解釋MySql變數ErrorFilter
- Oracle listener log 日誌分析方法Oracle
- K8s 1.14 釋出了,Release Note 該怎麼讀?K8S
- 高危預警 || 海雲安釋出Apache Log4j2漏洞處置方案Apache