接口与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个有效方法

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容