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

  • 通过 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 是运行时】什么情况下用runtime?大部分人能...
    梦夜繁星阅读 9,082评论 7 64
  • 原文出处:南峰子的技术博客 Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了...
    _烩面_阅读 5,057评论 1 5
  • 这篇文章完全是基于南峰子老师博客的转载 这篇文章完全是基于南峰子老师博客的转载 这篇文章完全是基于南峰子老师博客的...
    西木阅读 30,704评论 33 466
  • 这当然是个错误。 因为爱吹水,一直有朋友要我开个公众号。但试用了一下之后,感觉微信公众号的用心特别险恶:评论功能默...
    lenciel阅读 3,150评论 3 0
  • 1、序列号获取 课程结束三天内提交课程总结的同学,将获得老师邮件发送的iMindMap Home & Studen...
    徐大锤阅读 4,837评论 0 4