前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >isa 指针中不同的位代表不同的含义

isa 指针中不同的位代表不同的含义

原创
作者头像
艳艳代码杂货店
修改2021-09-26 09:39:45
9270
修改2021-09-26 09:39:45
举报
文章被收录于专栏:艳艳代码杂货店

isa 指针占用8字节,64位。64位中不同的位代表不同的含义:

对象与类的 isa 的指向关系

对象.isa -> 类.super -> 父类.super -> 根类.super -> nil

类.isa -> 元类.super -> 父元类.super -> 根元类.super -> 根类.super -> nil

元类.isa = 父元类.isa = 根元类.isa = 根元类

应用:判断对象类型

下面的打印结果是什么:

// [NSObject class] = NSObject

// object_getClass((id)[NSObject class]) = NSObject meta class

// 沿着 NSObject 的继承者链去找根元类 -> 根类 == NSObject meta class 或者 NSObject meta class 的父类的实例

BOOL res1 = [(id)[NSObject class] isKindOfClass:[NSObject class]];

BOOL res2 = [(id)[NSObject class] isMemberOfClass:[NSObject class]];

BOOL res3 = [(id)[TestObject class] isKindOfClass:[TestObject class]];

BOOL res4 = [(id)[TestObject class] isMemberOfClass:[TestObject class]];

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 对象与类的 isa 的指向关系
    • 应用:判断对象类型
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档