运行时(runtime)
什么是运行时?
运行时的作用
- 能获得某个类的所有成员变量
- 能获得某个类的所有属性
- 能获得某个类的所有方法
- 交换方法实现
- 能动态添加一个成员变量
- 能动态添加一个属性
- 能动态添加一个方法
运行时实例
应用1:打印某个类的所有成员变量(实例变量)--class_ copy_IvarList()
函数说明:
- 需要添加#import < objc/runtime.h >
I
-> Instance->实例变量即成员变量
var
->variable->变量
- 如果函数名中包含了copy\new\retain\create 那么这个函数返回的数据就需要手动释放
#import <objc/runtime.h>
- (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);
}