十:类的本质及isa指针和元类的简单介绍

一、类的基本概念:

1、类其实也是一个对象, 这个对象会在这个类第一次被使用的时候创建

2、只要有了类对象, 将来就可以通过类对象来创建实例对象

3、实例对象中有一个isa指针, 指向创建自己的类对象

4、类对象中保存了当前对象所有的对象方法

5、当给一个实例对象发送消息的时候, 会根据实例对象中的isa指针去对应的类对象中查找

6、所有类对象的继承关系就是元类对象的继承关系

二、isa指针

1.每一个对象都包含一个isa指针.这个指针指向当前对象所属的类。

2.[d bark];表示给d所指向的对象发送一条bark消息,调用对象的bark方法,此时对象会顺着内部的isa指针找到存储于类中的方法并执行。

3.isa是对象中的隐藏指针,指向创建这个对象的类。

4.通过isa指针我们可以在运行的时候知道当前对象是属于那个类。

三、元类

1、元类的定义:元类是类对象的类,每个类都有自己独一无二的元类,即

   (1)当你给对象发送消息时,消息是在寻找这个对象的类的方法列表。

   (2)当你给类发消息时,消息是在寻找这个类的元类的方法列表。

元类是必不可少的,因为它存储了类的类方法。每个类都必须有独一无二的元类,因为每个类都有独一无二的类方法。

2、元类的类:

   (1)元类,就像类一样,它也是一个对象,也可以调用它的方法。这就意味着他必须也有一个类。

 (2)所有的元类都使用根元类(继承体系中处于顶端的类的元类)作为他们的类。即所有NSObject的子类的元类都会以NSObject的元类作为他们的类。

   (3)所有的元类使用根元类作为他们的类,根元类的元类则就是它自己。也就是说基类的元类的isa指针指向他自己。

原文地址:https://www.cnblogs.com/hissia/p/5442253.html