美文网首页
iOS中 runtime 运行时的简单使用:获取某个类的成员变量

iOS中 runtime 运行时的简单使用:获取某个类的成员变量

作者: magic_pill | 来源:发表于2016-11-03 10:54 被阅读36次
  • 通过 runtime 获取到某个类的所有成员变量:
- (void)viewDidLoad {
    [super viewDidLoad];
    
    //获取所有成员变量以及其所归属的类
    unsigned int count = 0;
    Ivar *vars = class_copyIvarList([UITextField class], &count);
    
    for (int i=0; i<count; i++) {
        Ivar var = *(vars + i);
        NSLog(@"%s <------>  %s",ivar_getName(var),ivar_getTypeEncoding(var));
    }
}
成员变量
  • 通过 runtime 获取到某个类的所有属性及其对应的类:
- (void)viewDidLoad {
    [super viewDidLoad];
    
    //获取所有属性以及其所对应的类
    unsigned int count = 0;
    objc_property_t *properties = class_copyPropertyList([UITextField class], &count);
    
    for (int i=0; i<count; i++) {
        objc_property_t property = properties[i];
        NSLog(@"%s   <-------> %s",property_getName(property),property_getAttributes(property));
    }
}
原有属性列表 获取的属性列表
  • 其它
    通过类比获取 成员变量 和 属性列表 的方法,还可以获取到某个类所拥有的方法、方法所返回的类型、方法参数个数...这里不再赘述。

相关文章

网友评论

      本文标题:iOS中 runtime 运行时的简单使用:获取某个类的成员变量

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