isa指针指向哪里

1. isa指针指向哪里     super_class指针指向哪里

   实例对象的isa指针指向类对象,类对象的isa指针指向元类对象,元类对象的isa指针指向基类

   类的 super_class指针指向他的父类,父类指向父类.......,   最后指向基类,基类指向nil

   元类的   super_class指针指向他的父类(元类),父类(元类)指向父类(元类).......,   最后指向基类(元类),基类(元类)指向他的(类的)基类 ,(类)基类指向nil

 

  1.2   先了解下 实例对象、类对象、元类对象 

       通过alloc创建实力对象

       NSObject *object1 = [[NSObject alloc] init];

       同过class创建类对象

       Class cs = [NSObject Class]; 或是  Class cs =  [object1 Class];

       通过object_getClass()创建元类对象

       Class metaCs = object_getClass(cs); 

  1.3   元类对象和类对象在内存中有且只有1份   看下面代码

      

   

     1.4.     实例对象、类对象、元类对象都有isa指针

    

     1.5.    看代码证明isa指向哪里

          1.5.1   实例对象isa指针指向类对象           在64位之后   实例对象isa&ISA_MASK之后才能得到的地址

      

      1.5.2   类的isa指针指向元类对象      在64位之后   对象isa&ISA_MASK之后才能得到元类的地址

    

    为什么会报错? 因为class是一个结构体 ,结构体内存储的有isa指针  ,但是不能被外部调用,   看下面代码

    

    接下来我们就写一个一摸一样的Class结构体,来证明类对象的isa指针指向元类对象  看代码

     

二    super_class指针指向哪里

       1    类的 super_class指针指向他的父类,父类指向父类.......,   最后指向基类,基类指向nil

 

        

       基类指向nil   看代码证明

        

三    元类  

         元类的    super_class指针指向他的父类(元类),父类(元类)指向父类(元类).......,   最后指向基类(元类),基类(元类)指向他的(类的)基类 ,(类)基类指向nil

         看下面代码证明

         

 

 

         

在网上找的大神的图公大家参考:

 

posted @   可可锋  阅读(499)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示