XB 類物件的分類 2

2021-10-01 06:49:29 字數 1316 閱讀 7637

/*------------isa指標--------------------------------------*/

1>instance的isa指標指向class

當呼叫物件方法的時候,通過instance的isa指標找到class,然後在class中找到物件方法的實現進行呼叫

2>class的isa指標指向meta-class

當呼叫類方法的時候,通過class的isa指標找到meta-class,然後在meta-class中找到類方法的實現進行呼叫

3>meta-class的isa指標都指向基類的meta-class

基類的meta-class指向它自己

/*------------類物件的superclass指標--------------------------------------*/

superclass指標只有class物件和meta-class物件有

當instance物件要呼叫物件方法時,會先通過isa指標找到該物件的類物件,如果有這個物件方法的實現,就呼叫,如果沒有,通過superclass指標找到父類物件,在父類物件總找到物件方法的實現。最後如果沒有找到,報錯!!

/*------------元類物件的superclass指標--------------------------------------*/

當類物件要呼叫類方法時,會先通過isa指標找到該類的元類物件,如果有這個類方法的實現,就呼叫,如果沒有,通過superclass指標找到父類元類物件,在父類元類物件總找到類方法的實現。如果找到基類的元類還沒有找到,會通過superclass找到基類的類物件,在類物件中找對應的例項方法實現。最後如果沒有找到,報錯!!

1.物件方法與類方法都有隱藏的self引數,如果列印self,會發現,self是呼叫者的位址,也就是說,類物件呼叫的類方法中的self,是該類物件,例項物件呼叫的例項方法中的self是該例項。如果是上述最後一種,類物件呼叫了基類中的例項方法,self依舊列印該類物件的位址。

2.理論上列印isa指標,應該是isa指標指向的類或者元類物件的位址,但是從64位開始,isa需要進行一次位運算才能得到真實的位址

其中class_rw_t是bits經過一次掩碼的計算才能得到

XB 物件的分類 1

物件分例項物件 類物件 元類物件三種型別 nsobject obj nsobject alloc init 是通過類alloc出來的物件,裡邊儲存的有isa指標和成員變數 nsobject object1 nsobject alloc init nsobject object2 nsobject a...

2)類與物件

public class dog void hungry void sleeping 乙個類可以包含以下型別變數 構造方法 class person static void main string args 例如 hello hello new hello 這時呼叫的是hello的無引數構造方法 h...

2 類和物件

類即類別 種類,是物件導向設計最重要的概念,從一小節我們得知物件是特徵與技能的結合體,而類則是一系列物件相似的特徵與技能的結合體。那麼問題來了,先有的乙個個具體存在的物件 比如乙個具體存在的人 還是先有的人類這個概念,這個問題需要分兩種情況去看 世界上肯定是先出現各種各樣的實際存在的物體,然後隨著人...