美文网首页
iOS开发------------宏自定义输出(NSLog)

iOS开发------------宏自定义输出(NSLog)

作者: 因为太有钱 | 来源:发表于2018-01-25 16:30 被阅读16次

记录在项目中用的自定义打印代码

#ifdef __OBJC__
#ifdef DEBUG
# define XLog(fmt, ...) NSLog((@"\n[文件名:%s]\n" "[函数名:%s]\n" "[行号:%d] \n" "[打印内容]:"fmt),\
    [[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String],\
    __FUNCTION__,\
    __LINE__,\
    ##__VA_ARGS__);
#else
# define XLog(...)
#endif
#endif

输出结果如图

Snip20180125_4.png

知其然之气所以然

  1. VA_ARGS 是一个可变参数的宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持)。宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉的作用,否则会编译出错。
  2. FILE 宏在预编译时会替换成当前的源文件地址
    在这里只取类名([[[NSString stringWithUTF8String:FILE] lastPathComponent] UTF8String])
    如果只有FILE 就是这个类名的全部路径
    例如:
    [文件名:/Users/xxxxxxx/Documents/PersonalFiles/test/test/ViewController.m]
  3. LINE宏在预编译时会替换成当前的行号
  4. FUNCTION宏在预编译时会替换成当前的函数名称
    有了以上这几个宏,特别是有了VA_ARGS ,调试信息的输出就变得灵活多了。

相关文章

  • iOS宏关闭NSLog输出

    Release版本关闭Log输出 输出更详细的调试信息 参考文章:iOS开发-使用宏自定义输出(NSLog)

  • iOS下日志记录

    iOS开发中,一般大家都会自定义一个DLog的宏来代替NSLog,用来控制Release下的Log输出。但是有以下...

  • iOS开发------------宏自定义输出(NSLog)

    记录在项目中用的自定义打印代码 输出结果如图 知其然之气所以然 VA_ARGS 是一个可变参数的宏,这个可变参数的...

  • IOS NSLog宏定义

    IOS NSLog宏定义 标签(空格分隔): IOS IOS NSLog宏定义 宏定义NSLog方法,不用加";"...

  • oc Description

    标签:ios开发入门 //自定义类用NSLog是输出不了的,输出的是它的地址,而在后面实现了description...

  • iOS ——自定义NSLog宏输出

    在debug模式下的时候需要把所在的类名、方法名、行数等相关信息也打印出来,这样在开发的时候就可以快速定位调试的位...

  • 所谓的自定义NSLog

    自定义NSLog 在程序开发的时候,很多coder都会设置DEBUG下的定义NSLog宏。在RELESAE版本的时...

  • iOS 数组和字典NSLog及po输出中文

    前言 当你搜索“iOS 数组和字典NSLog输出中文” 时会找到:这个 iOS开发——输出中文(字典和数组)这个 ...

  • iOS开发中常用的宏定义

    iOS开发中常用的宏定义 尺寸宏 打印宏 替换NSLog来使用,debug模式下可以打印很多方法名,行信息。 #...

  • 使用NSLog打印 控制台没有输出

    原因:一直使用自定义的宏打印数据,系统的NSLog禁用了,调试BUG需要打印时间把自定义的宏输出注释了,使用系统N...

网友评论

      本文标题:iOS开发------------宏自定义输出(NSLog)

      本文链接:https://www.haomeiwen.com/subject/ykivaxtx.html