說明 | |
---|---|
首次發(fā)布 | 2017年06月23日 |
最近更新 | 2019年06月08日 |
背景:在開發(fā)中磅氨,如果我們直接使用
NSLog(@"%@", model);
打印出來只是自定義 model 的內(nèi)存地址剑逃,但我們需要查看模型內(nèi)的所有屬性的值,就需要重寫- (NSString *)description
或- (NSString *)debugDescription
巾钉。
一、 關(guān)于 - (NSString *)description
和 - (NSString *)debugDescription
的異同點(diǎn):
-
異:
- (NSString *)description
是從控制臺(tái)輸出,比如NSLog(@"%@", model);
滔驶。
- (NSString *)debugDescription
通過斷點(diǎn)po打印。 -
同:
輸出信息是一樣的卿闹,因?yàn)槲覀兌际潜闅v自定義模型的所有屬性。
二昆禽、實(shí)現(xiàn):由于我們不想在每個(gè)自定義模型里都實(shí)現(xiàn)一遍 - (NSString *)description
或 - (NSString *)debugDescription
方法贡翘,所以我們可以寫到NSObject
分類里,一勞永逸揪漩。
實(shí)現(xiàn)方法: 如果你是用的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