isa:需要注意的是在Objective-C中,所有的类自身也是一个对象,这个对象的Class里面也有一个isa指针,它指向metaClass(元类),我们会在后面介绍它。 super_class:指向该类的父类,如果该类已经是最顶层的根类(如NSObject或NSProxy),则super_class为NULL。 cache:用于缓存最近使用的方法。一个接收者对象接收到一个消息...
元类代替了类对象描述了类方法,就像类对象代替了实例对象描述了实例化方法。 很显然,元类也是对象,也应该是其他类的实例,实际上元类是根元类(root class’s metaclass)的实例,而根元类是其自身的实例,即根元类的isa指针指向自身。 类的super_class指向其父类,而元类的super_class则指向父类的元类。元类的su...
编译器创建一个而且只创建一个对象来表达这些信息,那就是类对象,因此,在OC中,所有的类自身也是一个对象。 虽然类对象保存了类的属性,但它本身并不是一个类的实例。它没有自己的实例变量,而且它也不能执行为类实例设计的方法。不过,类定义了可以包含只为类对象使用的方法,这就是类方法(静态方法),这些方法不同...
OC对象的内存布局相对于C++更为复杂一些,出现了元类的概念: OC对象内存布局 简单来说,最左边的是对象(Instance),中间的是类(Class),最右边的是元类(Meta Class)。属性(包括父类)都保存在对象本身的存储空间内;本类的实例方法保存在类中,本类的类方法保存在元类中。 那么对象的内存布局如下:isa 指针指向其类...
元类的isa指向哪里?所有元类的isa指针都指向基类的元类。如果一个类没有父类,其元类就指向自身。元...
(2) 每一个类对象都有一个isa指向唯一的Meta class (3) 每一个元类对象的 isa指针都指向 NSObject的元类对象 消息传递和转发机制 消息传递(Messaging):在对象之间传递数据并执行任务的过程 Objective-C基于C语言加入了面向对象特性和消息转发机制的动态语言。除编译器外还须要用Runtime系统来动态创建类和对象进行...
类也是一个对象,它是另外一个类的实例,这个就是“元类”,元类里面保存了类方法的列表,类里面保存了实例方法的列表。实例对象的isa指向类,类对象的isa指向元类,元类对象的isa指针指向一个“根元类”(root metaclass)。所有子类的元类都继承父类的元类,换而言之,类对象和元类对象有着同样的继承关系。
没有引用关系的两个对象之间无法发送消息。Objective-C中把连接对象的变量称为输出口(outlet)。 我们可以把具备相同变量和方法的对象提炼出来,做成“模版”。这样以后就可以使用“模版”来创建各个具体的对象。 这种“模版”就是类(Class)。 用类创建对象的过程叫做实例化(instantiation),生成的对象叫做实例对象(instanc...
isa:在大多数的面向对象的语言中,都有类和对象的概念。其中,对象是类的实例,是通过类数据结构的定义创建出来的,对象的isa指针是指向其所属类的。同时,在Objective-C语言中,类本身也是一个对象,类作为对象时isa指针指向元类(Meta Class),后面会详解;