簡介
runtime 是OC的底層邏輯, 可以 在程序運行的時候 去讀取 對象的方法 和 屬性, 并且篡改它們
具體流程
- 導(dǎo)入頭文件
#import <objc/runtime.h>
- 讀取對象的所有成員變量名
//class_copyIvarList()方法 是C函數(shù)
//參數(shù)1:要從哪個類中獲取成員變量
//參數(shù)2:屬性名的數(shù)量, 是二級指針, 靠回傳
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];
//用完就要手動釋放占據(jù)的內(nèi)存
free(varList);
}