运行时(runtime)
什么是运行时?
运行时的作用
- 能获得某个类的所有成员变量
- 能获得某个类的所有属性
- 能获得某个类的所有方法
- 交换方法实现
- 能动态添加一个成员变量
- 能动态添加一个属性
- 能动态添加一个方法
运行时实例
应用1:打印某个类的所有成员变量(实例变量)--class_ copy_IvarList()
函数说明:
- 需要添加#import < objc/runtime.h >
I
-> Instance->实例变量即成员变量 var
->variable->变量 - 如果函数名中包含了copy\new\retain\create 那么这个函数返回的数据就需要手动释放
#import - (void)example{ //成员变量的数量 unsigned int outCount = 0; //获得所有的成员变量 //ivas是一个指向成员变量的指针 //默认指向第0个成员变量(最前面) Ivar *ivars = class_copyIvarList([UITextField class], &outCount); //一个Ivar就代表一个成员变量(Instancec variable) //遍历所有的成员变量 for (int i = 0; i < outCount; i++) { //取出i位置对应的成员变量 Ivar ivar = *(ivars + i); //==ivars[i] //C语言允许,指向第0个成员变量的指针可以用数组方式访问 //Ivar ivar = ivars[i]; //获得成员变量的名字 NSLog(@"%s",ivar_getName(ivar)); } //如果函数名中包含了copy\new\retain\create 那么这个函数返回的数据就需要手动释放 free(ivars);}