美文网首页
浅谈objc_object结构

浅谈objc_object结构

作者: 三秋树下 | 来源:发表于2017-08-07 15:38 被阅读61次
关键词:
isa
super_class
metaClass

isa:是一个 objc_class 类型的指针
isa指针指向的其实是类的元类,如果之前的类名为:Person,那么被runtime更改以后的类名会变成:NSKVONotifying_Person。

super_class:一看就明白,指向该类的父类呗!如果该类已经是最顶层的根类(如 NSObject 或 NSProxy),那么 super_class 就为 NULL。

在继承层次中,子类,父类,根类(这些都是普通 class)以及其对应的 metaclass 的 isa 与 super_class 之间关系:
规则一:类的实例对象的 isa 指向该类;该类的 isa 指向该类的 metaclass;
规则二:类的 super_class 指向其父类,如果该类为根类则值为 NULL;
规则三:metaclass 的 isa 指向根 metaclass,如果该 metaclass 是根 metaclass 则指向自身;
规则四:metaclass 的 super_class 指向父 metaclass,如果该 metaclass 是根 metaclass 则指向该 metaclass 对应的类;

Objc中的object与class的定义如下:

typedef struct objc_class *Class;

typedef struct objc_object {
Class isa;
} *id
Class 是一个 objc_class 结构类型的指针;
id(任意对象) 是一个 objc_object 结构类型的指针,其第一个成员是一个 objc_class 结构类型的指针。


类对象(class object)与实例对象(instance object

Objective-C 中的类本质上也是对象,我们称之为类对象。按照我们前面所说的所有的对象都是某个类的实例,那么类对象又是什么类的实例呢?答案就是我们将在下一节介绍的元类。

在 Objective-C 中有一个非常特殊的类 NSObject ,绝大部分的类都继承自它。它是 Objective-C 中的两个根类(rootclass)之一,另外一个是 NSProxy(本文不讨论)。同样的,我们打开文件 NSObject.h ,可以看到 NSObject 类其实就只有一个成员变量 isa ,所有继承自 NSObject 的类也都会有这个成员变量。

NSObject的定义

参考地址:
深入浅出Cocoa之类与对象
Objective-C对象模型

相关文章

  • 浅谈objc_object结构

    关键词: isa super_class metaClass isa:是一个 objc_class 类型的指针is...

  • iOS runtime详细内容

    一. objc_object结构体 objc_class结构体 1.1 objc_object结构体 isa指针...

  • 深入理解Runtime中的isa

    objc_object Objective-C 所有对象都是 C 语言结构体objc_object,这个结构体中包...

  • iOS Runtime

    一、数据结构 id 从文档中可知,id是指向objc_object结构体的指针。 objc_object objc...

  • Runtime之数据结构

    objc_object:实际上我们创建的所有对象(id)对应的数据都是objc_object这个结构体, 这个结构...

  • iOS runtime学习笔记

    一、对象 id 1,id是指向objc_object结构体的指针变量,objc_object结构体中首个成员是Cl...

  • 13、id和NSObject*的区别

    1、id是objc_object的结构体指针,定义是typedef struct objc_object id,所...

  • class结构

    摘出重要的部分,objc_class 是继承 objc_object 结构体 objc_object 有 isa ...

  • RunTime

    数据结构 objc_object objc_class isa指针 method_t objc_object id...

  • iOS RunTime

    Runtime 一、数据结构 1、objc_object id = objc_object : isa_t为共用体...

网友评论

      本文标题:浅谈objc_object结构

      本文链接:https://www.haomeiwen.com/subject/hssgqxtx.html