runtime简单的认识
我所理解的runtime是一个使用C编写的库,为C添加了面向对象的特性,它是一个库(Runtime Library中文:运行时库).在这个库中可以用C函数来实现方法,对象也可以用C语言的结构体来表示…所有oc的方法的背后都是通过runtime来运行的.
查看<
objc/objc.h>
1.OC中的对象是一个objc_object类型的结构体
struct objc_object {
Class isa OBJC_ISA_AVAILABILITY;
};
id是一个objc_object类型的指针
typedef struct objc_object *id;
2.OC中的类是一个objc_class类型的结构体
struct objc_class{
Class isa OBJC_ISA_AVAILABILITY;
#if !__ OBJC2__
Class super_class
const char *name
long version
long info
long instance_size
struct objc_ivar_list
struct objc_method_list *methodLists
struct objc_cache *cache
struct objc_protocol_list *protocols
#endif
}OBJC2_UNAVAILABLE
3.isa是一个指向objc_class结构体的指针
(1)对于objc_object,其isa指向的是对象对应的类
(2)对于objc_class,其isa指向的是类对应的类-元类(metaclass)
4.常用类型
1.
<objc/objc.h>
SEL,IMP
2.
<objc/runtime>
Method,Ivar,Category,Protocol
3.
<objc/message>