美文网首页程序员
OC runtime读取对象的所有成员变量

OC runtime读取对象的所有成员变量

作者: wlwl123 | 来源:发表于2016-10-26 20:59 被阅读0次

    简介

    runtime 是OC的底层逻辑, 可以 在程序运行的时候 去读取 对象的方法 和 属性, 并且篡改它们

    具体流程

    1. 导入头文件
    #import <objc/runtime.h>
    
    1. 读取对象的所有成员变量名
        //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);
    }
    

    相关文章

      网友评论

        本文标题:OC runtime读取对象的所有成员变量

        本文链接:https://www.haomeiwen.com/subject/tlhjuttx.html