简介
runtime 是OC的底层逻辑, 可以 在程序运行的时候 去读取 对象的方法 和 属性, 并且篡改它们
具体流程
- 导入头文件
#import <objc/runtime.h>
- 读取对象的所有成员变量名
//class_copyIvarList()方法 是C函数
//参数1:要从哪个类中获取成员变量
//参数2:属性名的数量, 是二级指针, 靠回传
unsigned int outCount;
Ivar * varList = class_copyIvarList(self.class, &outCount);
for (int i = 0; i < outCount; i++) {
Ivar var = varList[i];
//使用指定的方法 获取ivar类型中的 属性名
const char *name = ivar_getName(var);
NSString *pName = [NSString stringWithUTF8String:name];
NSLog(@"%@", pName);
//通过KVC拿值
id obj = [self valueForKey:pName];
//用完就要手动释放占据的内存
free(varList);
}