从Objective-C到Swift,你必须会的(四)DLog

  调试的时候打断点太慢,所以输出log就是一个很好的选择了。断点,一行一行的按,太麻烦了。从log里一条一条的看,很快就可以找到到哪个函数的哪个地方这个代码就没执行了。这里不详细讨论调试技巧的事。不过大概就是这个样子。但是,输出的log你只想在调试的时候看。在正式发布的版本里,那些东西你给谁看,而且语句的执行还多少占资源。所以,这个时候就要用到#ifdef这样的处理命令,在DEBUG的时候输出log,发布版里不要这东西。

  DLog:

  1

  2

  3

  4

  5#ifdef DEBUG

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

  #else

  # define DLog(...)

  #endif

  这个宏定义可以看到,在执行的时候会输出函数的名称和行号以及其他的自定义的消息内容。所以,这个DLog输出的内容在调试的时候非常有效。

  在Swift里也内置了很多的identifier,很容易就可以实现出上面的宏。当然,Swift里是没有宏定义的,所以就只能用最一般的函数了。Swift的实现:

  1

  2

  3

  4

  5func dlog(message: String) {

  #if DEBUG

  println("file: \(__FILE__), line:\(__LINE__)")

  #endif

  }

  看着是很不错了。这里就想到小学课本里的那个一群鸟和某鸟学盖房子的故事了。

  上面的函数是不可用的,因为,呵呵,输出的文件名和行号永远都是一样的。都是这个函数所在的文件的名字和这个函数定义在这个文件里的行的行号!你看到这个函数拿去就用是解决不了你的问题的。所以,往下看。

  Swift有一个很有意思的特点,这个特点可以保证dlog这个函数输出调用函数的文件的名称和调用点的行号。来,看看代码你就懂了:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值