接口与API设计--17:description方法

describe

 Phone *p = [[Phone alloc]initWithName:@"iPhone" withPrice:999];
 NSLog(@"%@",p);

一般我们答应出来的内容 <Phone: 0x60400022dd00>
为了方便调试打印更多信息,我们需要在Phone类中重写describe方法

- (NSString *)description
{
    return [NSString stringWithFormat:@"<%@:%p \"%@\">", [self class],self,
            @{@"_name":_name,
              @"_price":@(_price)
              }];
}

Phone *p = [[Phone alloc]initWithName:@"iPhone" withPrice:999];
NSLog(@"%@",p);

这样我们得到的信息会很详细,打印信息为:<Phone:0x600000238ae0 "{ "_name" = iPhone; "_price" = 999; }">

debugDescribe

debugDescribe方法主要是开发者在调试器中以控制台命令"po"打出对象时才调用,在debugDescribe方法里可以添加你认为调试必要的一些内容

在此处打断点,这时通过控制台可以打印出:


demo
没有重写debugDescription

当你重写debugDescribe方法

- (NSString *)debugDescription
{
    return [NSString stringWithFormat:@"<%@: %p> %@", [self class], self,
                @{@"_name":_name,
                  @"_price":@(_price),
                  @"more info":@"XXXXX"
                  }];
}

在控制台打印的信息为


重写debugDescription

参考

Effective+Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 测试程序时,经常需要打印并查看对象信息。一种办法是编写代码把对象的全部属性都输出到日志中。不过最常用的做法还是像下...
    CoderCurtis阅读 4,304评论 0 0
  • 时间过得真快,2018年的第一个月在忙碌中流逝过去。年底定制的计划执行得不太理想,原因主要是项目太忙没时间做,气候...
    落英坠露阅读 2,271评论 0 0
  • 运营是一个体系,是对运营过程的计划、组织、实施和控制,是让一件事得到良性发展的手段。作为一只刚接触运营的运...
    腹黑Jerry阅读 3,770评论 0 1
  • 九五年乡村支教,捐万元图书给乡下的孩子们。书,是永远的最爱! 给你我最爱 在图书捐赠仪式上的发言...
    夏花静秋阅读 1,598评论 0 1

友情链接更多精彩内容