OC-runtime机制,就是苹果给开发者提供的一套在运行时动态创建类、添加属性/方法(当然不止这些)的API,它是一套纯C语言的API
runtime的三大应用:
1.动态的创建一个类
2.动态地为某个类(包括category)添加属性/方法,修改属性值/方法
3.遍历一个类的所有属性/方法
以上的方法其实都是基于获取对象/类的isa指针并进行操作来实现的
相关函数
1. 增加
增加函数:class_addMethod
增加实例变量:class_addIvar
增加属性:@dynamic标签,或者class_addMethod,因为属性其实就是由getter和setter函数组成
增加分类属性:可以看http://blog.csdn.net/liujinlongxa/article/details/46293705
增加Protocol:class_addProtocol
2. 获取
获取函数列表及每个函数的信息(函数指针、函数名等等):class_getClassMethod method_getName ...
获取属性列表及每个属性的信息:class_copyPropertyList property_getName
获取类本身的信息,如类名等:class_getName class_getInstanceSize
获取变量列表及变量信息:class_copyIvarList
获取变量的值
3. 替换
将实例替换成另一个类:object_setClass
替换类方法的定义:class_replaceMethod
4.其他常用方法:
交换两个方法的实现:method_exchangeImplementations.
设置一个方法的实现:method_setImplementation.