Skip to content

Latest commit

 

History

History
33 lines (26 loc) · 1.32 KB

实例对象、类对象、元类对象的数据结构.md

File metadata and controls

33 lines (26 loc) · 1.32 KB

实例对象、类对象、元类对象的数据结构

实例对象是objc_object结构体,其实就是isa指针。

struct objc_object {
isa_t isa;
Class ISA();
Class getIsa();
}

类对象和元类对象的数据结构是一样的,都是objc_class结构体

typedef struct objc_class *Class;

struct objc_class { 
Class isa ;                                                         //每个Class都有一个isa指针 
#if !__OBJC2__ 
Class super_class ;                                          //父类 
const char *name ;                                          //类名 
long version ;                                                   //类版本
 long info ;                                                        //!*!供运行期使用的一些位标识。如:CLS_CLASS (0x1L)表示该类为普   class;CLS_META(0x2L)表示该类为metaclass等(runtime.h中有详细列出) 
long instance_size ;                                        //实例大小 
struct objc_ivar_list *ivars ;                            //存储每个实例变量的内存地址 
struct objc_method_list **methodLists ;      //!*!根据info的信息确定是类还是实例,运行什么函数方法等 struct objc_cache *cache ;                            //缓存 
struct objc_protocol_list *protocols ;            //协议 
#endif  
} ;