meta-class

什么是Cocoa中的Meta-class

好久不见. 提交于 2020-03-20 08:07:28
3 月,跳不动了?>>> 1. Objective-C中的对象 在 Objective-C 中,对象的类由 isa 指针标示, isa 指向了对象的类。 Objective-C 中一个对象的基本定义如下: typedef struct objc_object { Class isa; } *id; 这就是说,任何起始于指向类的指针的数据类型,都被当做 objc_object 。于是, Objective-C 中的所有类都被当做了对象。 实际上, objc_class 定义如下: typedef struct objc_class *Class; struct objc_class { Class isa; Class super_class; /* followed by runtime specific details... */ }; 2. 什么是meta-class Meta-class 与类相似,也是一个对象。类有实例对象,而类可看作是 meta-class 的实例,即类的 isa 指向它。它有这么些特性,结合图 1 进行理解。 l Meta-class 包含了类的类方法; l 类和 meta-class 成对出现; l Meta-class 也有继承关系; l 每个类都有属于自己的唯一的 meta-class ; l 所有的 meta-class 的 isa 都指向基类的