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
- 利用github Actions釋出npm和releaseGithubNPM
- OpenHarmony v3.1 Release版本釋出
- Apache Doris 1.2.2 Release 版本正式釋出Apache
- flutter 釋出release版的流程(android)FlutterAndroid
- Apache Doris 1.2.4 Release 版本正式釋出|版本通告Apache
- Postgres-XL 10R1 release版本釋出
- 更穩定!Apache Doris 1.2.1 Release 版本正式釋出Apache
- 全面進化!Apache Doris 1.2.0 Release 版本正式釋出|版本通告Apache
- log-malloc2 0.2.4 釋出
- 如何做好 Release Plan 來完成一次完美的釋出
- 微軟Win10 Build 19044.1947 Release預覽版釋出微軟Win10UI
- Win11 Build 22000.917 Release預覽版釋出UI
- Win10 Build 19044.1806 Release預覽版釋出Win10UI
- DevEco Device Tool 3.0 Release 新版本釋出,支援多人共享開發dev
- [BUG反饋]後臺釋出的文章中帶的程式碼,釋出後會被遮蔽是為什麼
- 快播王欣推匿名社交APP馬桶MT 尚未釋出就遭微信遮蔽APP
- iPhoneSE怎麼遮蔽簡訊?蘋果iPhoneSE遮蔽簡訊方法iPhone蘋果
- 未來已來,OpenHarmony 3.2 Release釋出,邁入發展新階段
- maven中snapshot快照庫和release釋出庫的區別和作用Maven
- CSDN支援使用FireFox釋出BlogFirefox
- weblogic中釋出jive的問題Web
- 業界率先支援 MCP-OVER-XDS 協議,Nacos 2.0.1 + 1.4.2 Release 正式釋出協議
- ChunJun 1.16 Release版本即將釋出,bug 捉蟲活動邀您參與!
- PHP錯誤型別及遮蔽方法PHP型別
- 使用eclipse執行maven-release-plugin外掛釋出jar異常問題(.project)(Cannot prepare the release because you have local modifications )EclipseMavenPluginJARProject
- iOS 企業 ipa釋出方法iOS
- 微信支付 V3 的 Java 實現 Payment Spring Boot-1.0.7.RELEASE 釋出JavaSpring Boot
- DevEco Device Tool 3.1 Release新版本釋出,新增資源管理器、SFTP、HDCdevFTP
- 在1.7.2釋出之際發現重大bug之後,1.7.3終於如期release了
- Google全新Logo釋出:適應更多平臺Go
- 遮蔽隨身碟病毒執行的方法
- ORACLE E-BUSINESS SUITE 12.2.4 RELEASE UPDATE PACK (2014-08-08釋出)OracleUI
- 【技巧】如何使用客戶端釋出BLOG+如何快速釋出微信公眾號文章客戶端
- Hush智慧耳塞評測噪音遮蔽效果出眾
- Git開發、釋出、缺陷分離模型概述(支援master/develop/feature/release/hotfix型別分支)Git模型ASTdev型別
- 享受release版本釋出的好處的同時也應該警惕release可能給你引入一些莫名其妙的大bug
- 除了GET方法,新的HTTP QUERY方法規範釋出HTTP