runtime是什么?
runtime是一个c和汇编写的动态库,它就像一个小小的系统,将OC和C紧密关联,这个系统主要做了两件事情:
1、封装C语言的结构体和函数,让开发者在运行时创建、检查或者修改类、对象和方法等等。
2、传递消息,找出方法的最终执行代码。
举例,A对象调用方法goHome.
OC的实现代码:[A goHome];
C语言的实现代码: objc_msgSend(A, @selector(goHome));
runtime提供的方法
1、objc_property_t * class_copyPropertyList ( Class cls, unsigned int *outCount ); //获取属性列表
2、Method * class_copyMethohList ( Class cls, unsigned int * outCount ); //获取所有方法的数组
3、BOOL class_addMethod ( Class cls, SEL name, IMP imp, const char *types ); // 添加方法