说明 | |
---|---|
首次发布 | 2017年06月23日 |
最近更新 | 2019年06月08日 |
背景:在开发中,如果我们直接使用
NSLog(@"%@", model);
打印出来只是自定义 model 的内存地址,但我们需要查看模型内的所有属性的值,就需要重写- (NSString *)description
或- (NSString *)debugDescription
。
一、 关于 - (NSString *)description
和 - (NSString *)debugDescription
的异同点:
-
异:
- (NSString *)description
是从控制台输出,比如NSLog(@"%@", model);
。
- (NSString *)debugDescription
通过断点po打印。 -
同:
输出信息是一样的,因为我们都是遍历自定义模型的所有属性。
二、实现:由于我们不想在每个自定义模型里都实现一遍 - (NSString *)description
或 - (NSString *)debugDescription
方法,所以我们可以写到NSObject
分类里,一劳永逸。
实现方法: 如果你是用的MJExtesion或YYModel做模型解析,不妨用下面的这种方式。
#import "MJExtension.h"
@implementation NSObject (MZDescription)
#ifdef DEBUG
- (NSString *)description {
if (self.superclass == [NSObject class]) {
return [self mj_JSONString];
}
return [NSString stringWithFormat:@"<%@: %p>", self.class, self];
}
- (NSString *)debugDescription {
if (self.superclass == [NSObject class]) {
return [self mj_JSONString];
}
return [NSString stringWithFormat:@"<%@: %p>", self.class, self];
}
#endif
@end