description方法

description基本概念

1.NSLog(@"%@", objectA);這會自動調用objectA的description方法來輸出ObjectA的描述信息.

2.description方法默認返回對象的描述信息(默認實現是返回類名和對象的內存地址)

3.description方法是基類NSObject 所帶的方法,因為其默認實現是返回類名和對象的內存地址, 這樣的話,使用NSLog輸出OC對象,意義就不是很大,因為我們并不關心對象的內存地址,比較關心的是對象內部的一些成變量的值。因此,會經常重寫description方法,覆蓋description方法 的默認實現

description重寫的方法

/**對象方法:當使用NSLog輸出該類的實例對象的時候調用*/

-(NSString *) description

{

return [NSString stringWithFormat:@"狗腿數:%d,狗眼數%d\n",_legNum,_eyeNum];

}

/**類方法:當使用NSLog輸出該類的類對象的時候調用*/

+(NSString *) description

{

return @"+開頭的description方法";

}

description陷阱

1.千萬不要在description方法中同時使用%@和self,下面的寫法是錯誤的

- (NSString *)description {

return [NSString stringWithFormat:@"%@", self];

}

2.同時使用了%@和self,代表要調用self的description方法,因此最終會導致程序陷入死循環,循 環調用description方法

3.當[NSString stringWithFormat:@“%@”, self]; 使用它時,循壞調用,導致系統會發生運行時錯誤。

4.當該方法使用NSLog(“%@”,self) 時候, 系統做了相關的優化,循壞調用3次后就會自動退出

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容