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

describe

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

一般我们答应出来的内容
为了方便调试打印更多信息,我们需要在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);

这样我们得到的信息会很详细,打印信息为:

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

你可能感兴趣的:(接口与API设计--17:description方法)