Objective C中NSLog虽然使用方便,但是有时候NSLog并不能满足程序员调试程序的全部需求。比如打印的结果位于哪个类中?是在哪个类中打印的?或者具体是在哪行打印的等等。所以对于程序员来说急切需要可以满足上述要求的Log方法。

DLog就可以完全替代NSLog,并且满足上述的需求。DLog本质上就是个宏替换,可以输出类名,方法名和行号。DLog具体代码如下:

#ifdef DEBUG#define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);#else#define DLog(...)#endif

将以上代码写到prefix.pch文件中,并且在工程Bulid Settings的other C Flags的Debug中加入-DDEBUG就可以在代码中的任何位置使用DLog了。

因为是在Debug模式下加入DLog,所以在Release版本中不会加入DLog代码

简单介绍以下几个宏:

1) __VA_ARGS__ 是一个可变参数的宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持)。宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉,否则会编译出错。

2) __FILE__ 宏在预编译时会替换成当前的源文件名
3) __LINE__宏在预编译时会替换成当前的行号
4) __FUNCTION__宏在预编译时会替换成当前的函数名称

例如:DLog(@"mcoudeFlag:%d",mCodeFlag);

转载于:https://www.cnblogs.com/allen123/p/4447713.html

iOS 中DLog 用法相关推荐

  1. 关于iOS 中DLog 用法

    DLog的使用 Objective C中NSLog虽然使用方便,但是有时候NSLog并不能满足程序员调试程序的全部需求.比如打印的结果位于哪个类中?是在哪个类中打印的?或者具体是在哪行打印的等等.所以 ...

  2. ios中MKHorizMenu用法

    下载地址 https://github.com/MugunthKumar/MKHorizMenuDemo直接 加入MKHorizMenu目录即可 下载包地址 http://pan.baidu.com/ ...

  3. SQLite3在IOS中的用法

    {http://blog.csdn.net/mamong/article/details/8365466} 使用的过程根据使用的函数大致分为如下几个过程: sqlite3_open() sqlite3 ...

  4. iOS中CAShapeLayer用法

    (1)画虚线 CAShapeLayer *shapeLayer = [CAShapeLayer layer]; [shapeLayer setBounds:self.bounds]; [shapeLa ...

  5. IOS中NSUserDefaults的用法

    2019独角兽企业重金招聘Python工程师标准>>> IOS中NSUserDefaults的用法(轻量级本地数据存储) 分类: IOS开发 Object-C编程语言2012-09- ...

  6. ios开发 ajax hook,IOS中的网络拦截总结

    因为业务场景需要,要求对App中网络请求进行拦截.这里包括原生网络请求和WebView里的网络请求.之前我们了解过原生网络请求的拦截是可以实现的,但是WebView中网络请求似乎还不太可能,所以抱着尝 ...

  7. [转] iOS中@class #import #include 简介

    [转载自:http://blog.csdn.net/chengwuli125/article/details/9705315] 一.解析        很多刚开始学习iOS开发的同学可能在看别人的代码 ...

  8. ios中关于delegate(委托)的使用心得

    ios中关于delegate(委托)的使用心得 分类: iOS开发2012-05-15 10:54 34793人阅读 评论(9) 收藏 举报 iosuiviewtimerinterfaceprinti ...

  9. IOS中扩展机制Category和associative

    在ios开发中,有时候会遇到以下的问题,需要在一个类中添加自己的一些属性和方法.一般的做法是重写一个类来继承它,但是有时候就只是需要添加一些简单的属性和方法,那么这样做就显得过于麻烦,其实在IOS中还 ...

最新文章

  1. 火爆GitHub的《机器学习100天》,有人把它翻译成了中文版
  2. 计算机图形学直线扫描转论文,计算机图形学实验报告-实验1直线段扫描转换.doc...
  3. 自定义非等高 Cell
  4. vue 引入bootstarp --webpack
  5. 在阿里云上部署生产级别Kubernetes集群
  6. 编译Python2.7.10
  7. 关系型数据库表结构的两个设计技巧
  8. xp共享计算机,XP怎么设置局域网共享?
  9. rlm sql mysql.so_UBUUTU7.10上安装配置freeradius+mysql+rp-pppoe手记
  10. python物性库能调用哪些物质_Python获取热物性(2)使用ctREFPROP调用refprop
  11. 辽宁交通高等专科学校计算机专业宿舍,辽宁省交通高等专科学校宿舍条件怎么样 有独立卫生间和空调吗...
  12. C 标准库 —— stdio.h
  13. python正则表达式笔记之字符集合的使用
  14. cmsis-dap ubuntu Error: unable to find CMSIS-DAP device
  15. java中dao和dao.impl_java 包 dao 和 dao.impl 问题
  16. Macintosh30周年回顾视频 ---转自36kr
  17. [linux] 命令
  18. 精选100个Python实战项目案例,送给零基础小白的你
  19. c语言中,偷机取巧,输出超市购物小票的票头
  20. C语言学习笔记之初识

热门文章

  1. Apache Griffin调试各种报错总结
  2. 电子计算机4级证,计算机四级获证条件
  3. 读《身边的逻辑学有感》
  4. 淘宝微信如何进入微信推广?
  5. [转贴]让板载声卡支持ASIO
  6. 2020美赛E题解题思路(Drowning in Plastic)
  7. 古籍制作 - 古书制作 - 古籍制作工具 - 古籍制作软件 - 古籍修复工具 -古籍修复软件 - 古书制作软件 - 古书修复工具 - 古籍修复软件 -古籍修复软件
  8. 帮助粉丝用青泥学术大数据推荐毕业论文选题(围绕 教育信息化2.0、疫情期间线上学习质量问题、Steam教育、智慧教育等突破点来抉择)
  9. 字节跳动接力反内卷:宣布取消大小周,直接降薪 15%?
  10. OSChina 周四乱弹 ——地主家的傻儿子