在OC中,Description方法包括類方法和對象方法,而我們通常所重寫的description方法一般是重寫對象方法。而description方法是寫在NSObject中的,其他類都是NSObject的子類,所以可以從他那里繼承得到的,于是我點進去查看了NSObject的描述文件,結果只在描述文件中看到了description的類方法:
于是我就上面仔細尋找,發現有一個NSObject的協議,于是點進協議一看,發現了這個東西:
這是在NSObject 協議文件里面的 一個@property 格式的聲明,在協議中用@property修飾的對象,不像在@interface里面那樣會自動生成屬性和set 和get 方法的聲明和實現,只會生成這個對象的set和get聲明,而且默認是對象方法,這里@property的修飾符是readonly 因此只生成 description的get方法,也就是我們常改寫的description的對象方法,這就是為什么我們在NSObject里面找不到 description的對象方法的原因。