开发中通过NSLog的%@打印自定义的对象时,
只会打印出一个对象的内存地址。

例如:(xxxview:0xb677420)

但是打印系统的类型,例如NSArray就不会这样。

这是为什么呢?

原因:打印到日志时,对象会收到description消息,该方法所返回的描述信息将取代“%@”。

所以重写这个description方法就可以设定打印的东西。

还有一个方法可以重写,就是debugDescription方法:是开发者在调试器中以控制台命令打印对象时才调用的。在NSObject类的默认实现中,此方法只是直接调用了description。

当希望调试的时候可以看见打印的地址和信息,在正常打印的时候不需要地址时候,就可以像下面这样重写两个方法。

 - (NSString *)description
{
    return [NSStringstringWithFormat:@"<%@>",@{@"name":_name,@"work":_work}];
}

- (NSString *)debugDescription
{
    return [NSStringstringWithFormat:@"<%@ : %p, %@>",[selfclass],self,@{@"name":_name,@"work":_work}];
}

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-20
  • 2021-09-24
  • 2022-12-23
猜你喜欢
  • 2021-08-26
  • 2022-01-28
  • 2022-12-23
  • 2021-12-03
  • 2022-12-23
  • 2022-12-23
  • 2022-02-11
相关资源
相似解决方案