準備工作/生成一個Person類并定義一個屬性name
@property (nonatomic, copy) NSString* name;
控制器中初始化Person
- (void)viewDidLoad {
[super viewDidLoad];
self.persion = [[Persion alloc] init];
self.persion.name = @"Runya";
NSLog(@"%@", self.persion.name);
}
使用runtime改變實例成員的值
- (void) rylsj_changeVarName {
/// 實例變量個數(shù)
unsigned int count = 0;
/// 獲取所有的實例變量
Ivar* ivar = class_copyIvarList([self.persion class], &count);
/// 遍歷
for (int i = 0; i < count; i++) {
/// 實例變量
Ivar var = ivar[i];
/// 實例變量名字
const char * varName = ivar_getName(var);
/// 轉換成OC語音形式的
NSString* name = [NSString stringWithUTF8String:varName];
if ([name isEqualToString:@"_name"]) {
object_setIvar(self.persion, var, @"RunyaLsj");
break;
}
}
}
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。