這里使用到Runtime來修改.m文件中的私有變量,下面附上代碼
Father *father = [Father new];
//count記錄變量的數量IVar是runtime聲明的一個宏
unsigned int count = 0;
// 獲取類的所有屬性變量
Ivar *members = class_copyIvarList([Father class], &count);
for (int i = 0; i < count; i++) {
Ivar ivar = members[i];
//將IVar變量轉換為字符串,這里獲得了屬性名
const char *memberName = ivar_getName(ivar);
NSLog(@"%s", memberName);
Ivar m_name = members[0];
//修改屬性值
object_setIvar(father, m_name, @"Zhangsan");
//打印后發現Father中name的值變為Zhangsan
NSLog(@"%@", [father description]);
}
輸出結果
_name
name = Zhangsan