開發中通過NSLog的%@打印自定義的對象時,
只會打印出一個對象的內存地址。
例如:(xxxview:0xb677420)
但是打印系統的類型,例如NSArray就不會這樣。
這是為什么呢?
原因:打印到日志時,對象會收到description消息,該方法所返回的描述信息將取代“%@”。
所以重寫這個description方法就可以設定打印的東西。
還有一個方法可以重寫,就是debugDescription方法:是開發者在調試器中以控制台命令打印對象時才調用的。在NSObject類的默認實現中,此方法只是直接調用了description。
當希望調試的時候可以看見打印的地址和信息,在正常打印的時候不需要地址時候,就可以像下面這樣重寫兩個方法。
- (NSString *)description
{
return [NSStringstringWithFormat:@"<%@>",@{@"name":_name,@"work":_work}];
}
- (NSString *)debugDescription
{
return [NSStringstringWithFormat:@"<%@ : %p, %@>",[selfclass],self,@{@"name":_name,@"work":_work}];
}