建立了一個繼承自NSObject 的分類 ,其中主要有三個方法函數
.m文件中實現 cdn
建立NSObject子類DNPerson ,值得注意的是DNPerson中咱們聲明瞭3個方法,可是咱們只實現了2個,那麼沒有實現的方法會存儲在哪裏呢?問題本質實際上是關於oc中對象數據存儲的相關知識:對象
isa 指向和Class的繼承關係以下圖所示:blog
執行 [NSObject PrintClassChain: [DNPerson class]]; PrintClassChain ,中咱們經過object_getClass 函數獲取cls->ISA() 函數控制檯打印以下繼承
接下來咱們來看下根元類中的方法打印信息 get
能夠發現,根元類中只打印了類方法,此時根元類的class 爲NSObject, 根元類superClass的方法列表打印以下 在這裏咱們發現了,NSObject 的實例方法,也就是說當咱們在元類中查找方法直到根雲類中也沒有找到方法的時候會去NSObject 的類方法中查找一下,這也是爲何,繼承NSObject 的子類能夠執行經過類方法執行實例方法的緣由