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


開發中通過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}];
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM