describe
代码语言:javascript复制 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方法
代码语言:javascript复制- (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个有效方法