美文网首页OC进化iOS Developer
利用runtime获取私有属性名及类型

利用runtime获取私有属性名及类型

作者: 等待的风 | 来源:发表于2017-01-06 11:17 被阅读0次

在iOS中没有绝对的私有属性,虽然没有办法直接访问私有属性,但是可以利用kvc,kvo间接访问私有属性。使用kvc,kvo的前提是知道属性名,下面这个方法就是如何获取属性的变量名及类型。
使用runtime之前要先导入

#import <objc/runtime.h>

然后使用下面这个方法

- (void)printIvar:(Class)class {
    // count记录变量的数量IVar是runtime声明的一个宏
    unsigned int count = 0;
    // 获取类的所有属性变量
    Ivar *menbers = class_copyIvarList(class, &count);
    NSLog(@"count : %i",count);
    for (int i = 0; i < count; i++) {
        Ivar var = menbers[i];
        // 将IVar变量转化为字符串,这里获得了属性名和类型
        const char *memberName = ivar_getName(var);
        const char *memberType = ivar_getTypeEncoding(var);
        NSLog(@"%s----%s", memberName, memberType);
        //并不能打印父类属性
    }
}

需要注意的是,该方法并不会打印父类的属性。

相关文章

网友评论

    本文标题:利用runtime获取私有属性名及类型

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