runtime学习

运行时机制,runtime库里面包含了跟类、成员变量、方法相关的API,比如获取类里面的所有成员变量,为类动态添加成员变量,动态改变类的方法实现,为类动态添加新的方法等 需要导入1.是什么1> runtime是一套比较底层的纯C语言API, 属于1个C语言库, 包含了很多底层的C语言API2> 平时编写的OC代码, 在程序运行过程中, 其实最终都是转成了runtime的C语言代码, runtime算是OC的幕后工作者3> 举例:OC :[[MJPerson alloc] init] runtime :objc_msgSend(objc_msgSend("MJPerson" , "alloc"), "init") 2.用过么? 怎么用?1> runtime是属于OC的底层, 可以进行一些非常底层的操作(用OC是无法现实的, 不好实现)* 在程序运行过程中, 动态创建一个类(比如KVO的底层实现)* 在程序运行过程中, 动态地为某个类添加属性方法, 修改属性值方法* 遍历一个类的所有成员变量(属性)所有方法 3.相关的头文件和函数1> 头文件**2> 相关应用

* NSCoding(归档和解档, 利用runtime遍历模型对象的所有属性)

* 字典 --> 模型 (利用runtime遍历模型对象的所有属性, 根据属性名从字典中取出对应的值, 设置到模型的属性上)

* KVO(利用runtime动态产生一个类)

* 用于封装框架(想怎么改就怎么改)

3> 相关函数

* objc_msgSend : 给对象发送消息

* class_copyMethodList : 遍历某个类所有的方法

* class_copyIvarList : 遍历某个类所有的成员变量

* class_.....

4.必备常识

1> Ivar : 成员变量

2> Method : 成员方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • runtime原理 原理参考://www.greatytc.com/p/69b6cf840cd8 runt...
    T_aa阅读 4,717评论 3 12
  • 对于从事 iOS 开发人员来说,所有的人都会答出【runtime 是运行时】什么情况下用runtime?大部分人能...
    梦夜繁星阅读 9,090评论 7 64
  • 假期开始 新的一个月开始 横扫昨天的阴霾 积极生活 运动起来 吃起来~
    一路李花开阅读 1,059评论 0 0
  • 《日本漫画60年》要是不嫌贵最好买台湾版,没有马赛克。 既然是想快速提高,那我就推荐一些比较薄且好读的著作吧,后面...
    鼹鼠的土豆阅读 7,202评论 8 79
  • 1. 健康 (为了身姿挺拔,看起来身材好, 有气质) 每周总锻炼时长3小时以上 起床:6:15。拖延了15分钟才做...
    星空路上阅读 994评论 0 0