iOS——打印內容,NSLog自定義對象的內容如何打印出來,而不是隻打印地址

開發中經過NSLog的%@打印自定義的對象時,
只會打印出一個對象的內存地址。debug

例如:(xxxview:0xb677420)調試

可是打印系統的類型,例如NSArray就不會這樣。日誌

這是爲何呢?code

緣由:打印到日誌時,對象會收到description消息,該方法所返回的描述信息將取代「%@」。orm

因此重寫這個description方法就能夠設定打印的東西。對象

還有一個方法能夠重寫,就是debugDescription方法:是開發者在調試器中以控制檯命令打印對象時才調用的。在NSObject類的默認實現中,此方法只是直接調用了description。ip

當但願調試的時候能夠看見打印的地址和信息,在正常打印的時候不須要地址時候,就能夠像下面這樣重寫兩個方法。內存

- (NSString *)description
{
    return [NSStringstringWithFormat:@"<%@>",@{@"name":_name,@"work":_work}];
}

- (NSString *)debugDescription
{
    return [NSStringstringWithFormat:@"<%@ : %p, %@>",[selfclass],self,@{@"name":_name,@"work":_work}];
}
相關文章
相關標籤/搜索