isa指針

  • 對象的isa指針指向哪里?
    instance對象的isa指向class對象
    class對象的isa指向meta-class對象
    meta-class對象的isa指向基類的meta-class對象

  • OC的類信息存放在哪里?
    對象方法、屬性、成員變量、協(xié)議信息,存放在class對象中
    類方法,存放在meta-class對象中
    成員變量的具體值,存放在instance對象

在instance對象中,包含的信息有:

1.isa指針
isa指針指向的內存關系圖
  • instance的isa指向class
    當調用對象方法時,通過instance的isa找到class,最后找到對象方法的實現(xiàn)進行調用

  • class的isa指向meta-class
    當調用類方法時,通過class的isa找到meta-class,最后找到類方法的實現(xiàn)進行調用

2.class對象的superclass指針
class對象的superclass指針
  • 當Student的instance對象要調用Person的對象方法時,會先通過isa找到Student的class,然后通過superclass找到Person的class,最后找到對象方法的實現(xiàn)進行調用
3.meta-class對象的superclass指針
meta-class對象的superclass指針
  • 當Student的class要調用Person的類方法時,會先通過isa找到Student的meta-class,然后通過superclass找到Person的meta-class,最后找到類方法的實現(xiàn)進行調用
4.isa,superclass總結
isa,superclass

1.instance的isa指向class
2.class的isa指向meta-class
3.class的superclass指向父類的class
如果沒有父類,superclass指針為nil
4.meta-class的superclass指向父類的meta-class
基類的meta-class的superclass指向基類class
5.instance調用對象方法的軌跡
isa找到class,方法不存在,就通過superclass找父類
6.class調用類方法的軌跡
isa找meta-class,方法不存在,就通過superclass找父類

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容