Runtime | 改變實例變量值

準備工作/生成一個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ā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容