美文网首页
07-12、类的本质

07-12、类的本质

作者: 山中石头 | 来源:发表于2017-09-22 12:45 被阅读0次

类的本质:
类其实也是一个对象, 这个对象会在这个类第一次被使用的时候创建
只要有了类对象, 将来就可以通过类对象来创建实例对象
实例对象中有一个isa指针, 指向创建自己的类对象

类对象中保存了当前对象所有的对象方法
当给一个实例对象发送消息的时候, 会根据实例对象中的isa指针去对应的类对象中查找

Snip20170922_23.png Snip20170922_25.png
Snip20170922_22.png Snip20170922_26.png Snip20170922_27.png Snip20170922_29.png Snip20170922_31.png

虚线是isa,实线是继承关系


Snip20170922_24.png Snip20170922_30.png
类的本质的总结(重要)

每个对象都有isa,实例对象的isa指向类对象,类对象的isa指向元类对象,元类对象的isa指向根元类对象,根元类对象的isa指向自己。根元类对象就是NSObject元类对象。
知道isa的指向之后还要知道继承关系:“类对象”的继承关系就是“元类对象”的继承关系,为什么这样继承呢?这样继承的目的是为了方法(类对象方法和类方法)的查找,因为类对象里主要存储的是属性和对象方法列表,而元类对象中主要存储的是类方法列表,而调用方法然后去查找方法的顺序是:先在当前类中找,找不到根据继承关系去父类中找,那么无论查找对象方法还是类方法都是先在当前类中找,找不到根据继承关系去父类中找,类对象方法调用查找就是先在当前类对象中找,找不到根据继承关系去父类对象中找。类的对象方法调用查找就是先在当前类对象中找,找不到根据继承关系去父类对象中找,而类的类方法调用查找是在当前类元类对象中找,找不到根据继承关系去父类的元类对象中找。

注意:通过对类的本质学习可以通过C语言模拟一个OC的类。

相关文章

  • 07-12、类的本质

    类的本质:类其实也是一个对象, 这个对象会在这个类第一次被使用的时候创建只要有了类对象, 将来就可以通过类对象来创...

  • 类的本质

  • 类的本质

    类的本质 1.类的本质 类的本质其实也是一个对象(类对象) 程序中第一次使用该类的时候被创建,在整个程序中只有一份...

  • 类的本质

    1、类有isa指针、结构体成员变量、类方法 *isa指针的作用:是一个Class 类型的指针. 每个实例对象有个i...

  • 类的本质-类对象

    前言 今天整理了下自己电脑里的一些碎片笔记,时间有限只整理了这篇文章——类的本质,大家可以进行参考。 1.本质 类...

  • Runtime:OC对象、类、元类的本质

    零、Runtime是什么一、OC对象的本质二、OC类的本质三、OC元类的本质四、Runtime关于对象、类、元类的...

  • 类的本质 - OC

    Person *p = [Person new]; 我们都说p是Person类型的变量,但其Person它其实还是...

  • iOS类的本质

    1.类的本质 类的本质其实也是一个对象(类对象)程序中第一次使用该类的时候被创建,在整个程序中只有一份。此后每次使...

  • iOS类的本质

    首先,我们看下几个类型:NSObject、Class、objc_object、objc_class、id的联系与区...

  • 【感想】知识的迁移

    简单来说,就是A类事物的核心本质是C,而B类事物的核心本质也是C。 要做的就是学习A类事物后,发现它的核心本质C,...

网友评论

      本文标题:07-12、类的本质

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