isa指針

isa:是一個Class 類型的指針. 每個實例對象有個isa的指針,他指向對象的類,而Class里也有個isa的指針, 指向meteClass(元類)。元類保存了類方法的列表。當類方法被調用時,先會從本身查找類方法的實現,如果沒有,元類會向他父類查找該方法。同時注意的是:元類(meteClass)也是類,它也是對象。元類也有isa指針,它的isa指針最終指向的是一個根元類(root meteClass).根元類的isa指針指向本身,這樣形成了一個封閉的內循環。

元類:元類是類對象的類,類對象是元類的實例。

1.我們以前調用"+"開頭的類方法實際是在調用元類的對象方法

2.由于每個類有且只有一個,所以每個類對象都是其對應元類的單例

1.每個實例對象的類都是類對象,每個類對象的類都是元類對象,每個元類對象的類都是根元類(root metaclass的isa指向自身)2.類對象的父類最終繼承自根類對象NSObject,NSObject的父類為nil3.元類對象(包括根元類)的父類最終繼承自根類對象NSObject

可見,類與元類是一個閉環。


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

推薦閱讀更多精彩內容