免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
iOS開發(fā) NSLog使用
打印日志這在調(diào)試是非常必須的,但是release時肯定不打印的,占用內(nèi)存降低響應(yīng)速度。
之前覺得這沒有必要寫,但是有人問。整理一下,服務(wù)大眾。

#ifdef DEBUG
#define NSLog(...)  NSLog(__VA_ARGS__)
#else
#define NSLog(...)
#endif
這聲明在pch文件中,以后就可以盡情使用NSLog來打印日志了。在debug模式下打印日志,在release模式下不打印。

還有另外一種實現(xiàn)方法,
#ifndef __OPTIMIZE__
# define NSLog(...) NSLog(__VA_ARGS__)
#else
# define NSLog(...)
#endif

因為release模式通常會定義 __OPTIMIZE__,debug模式不會。

PS:以上是比較簡單的打印,也是有很詳細(xì)的打印的。
# define DLog(format, ...) NSLog((@"[文件名:%s]" "[函數(shù) 名:%s]" "[行 號:%d]" format), __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__); 

打印出來的 就是  [文件名:。。。。Cloud/ViewController.m][函數(shù) 名:-[ViewController viewDidLoad]][行 號:20]CECEEEEECC

=========

簡單介紹以下幾個宏:

1) __VA_ARGS__ 是一個可變參數(shù)的宏,這個可變參數(shù)的宏是新的C99規(guī)范中新增的,目前似乎只有g(shù)cc支持(VC6.0的編譯器不支持)。宏前面加上##的作用在于,當(dāng)可變參數(shù)的個數(shù)為0時,這里的##起到把前面多余的","去掉,否則會編譯出錯。
2) __FILE__ 宏在預(yù)編譯時會替換成當(dāng)前的源文件名
3) __LINE__宏在預(yù)編譯時會替換成當(dāng)前的行號
4) __FUNCTION__宏在預(yù)編譯時會替換成當(dāng)前的函數(shù)名稱


=========

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
禁止NSLog使用,在release版本禁止輸出NSLog內(nèi)容
iOS:你真的理解你在用的自定義NSLog嗎?
不直接用NSLog
iOS中使用斷言
宏定義的黑魔法
C語言日志分級如何設(shè)計?
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服