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

  • 通过 runtime 获取到某个类的所有成员变量:
- (void)viewDidLoad {
    [super viewDidLoad];
    
    //获取所有成员变量以及其所归属的类
    unsigned int count = 0;
    Ivar *vars = class_copyIvarList([UITextField class], &count);
    
    for (int i=0; i  %s",ivar_getName(var),ivar_getTypeEncoding(var));
    }
}
iOS中 runtime 运行时的简单使用:获取某个类的成员变量、属性_第1张图片
成员变量
  • 通过 runtime 获取到某个类的所有属性及其对应的类:
- (void)viewDidLoad {
    [super viewDidLoad];
    
    //获取所有属性以及其所对应的类
    unsigned int count = 0;
    objc_property_t *properties = class_copyPropertyList([UITextField class], &count);
    
    for (int i=0; i %s",property_getName(property),property_getAttributes(property));
    }
}
iOS中 runtime 运行时的简单使用:获取某个类的成员变量、属性_第2张图片
原有属性列表
iOS中 runtime 运行时的简单使用:获取某个类的成员变量、属性_第3张图片
获取的属性列表
  • 其它
    通过类比获取 成员变量 和 属性列表 的方法,还可以获取到某个类所拥有的方法、方法所返回的类型、方法参数个数...这里不再赘述。

你可能感兴趣的:(iOS中 runtime 运行时的简单使用:获取某个类的成员变量、属性)