美文网首页
自定义NSLog打印内容

自定义NSLog打印内容

作者: zfl1024 | 来源:发表于2017-07-11 10:46 被阅读0次

    开发中通过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}];
    }
    

    相关文章

      网友评论

          本文标题:自定义NSLog打印内容

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