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
看下面代码证明
在网上找的大神的图公大家参考:
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战