runtime内部实现机制

  • 1、是什么?
    runtime:运行时机制
    • 1.1 runtime是一套比较底层的C语言的API,属于一个C语言库,包含了很多底层的C语言API;
    • 1.2 平时编写的OC代码,程序运行最终都是转成了runtime里面的C语言代码,说明runtime是OC的幕后工作者,OC代码的实现都是调用runtime里面的C语言代码;
    • 1.3 举例
[[MJPerson alloc] init];
runtime:
objc_msgSend(objc_msgSend(“MJPerson”, “alloc”), “init”);
  • 2、用过吗,怎么用?
    runtime属于OC的底层,可以进行一些非常底层的操作(用OC不好实现)

    • 2.1 在程序运行过程中,动态创建一个类(比如KVO的底层实现,KVC底层也是runtime 机制)
    • 2.2 在程序运行过程中,动态的为某个类添加属性(成员变量)/方法,修改属性(成员变量)/方法
    • 2.3 遍历一个类的所有属性(成员变量)/方法
  • 3、相关的方法和头文件

    • 3.1 头文件
      • 3.1.1 <objc/runtime.h>
      • 3.1.2 <objc/message.h>
    • 3.2 相关应用
      • 3.2.1 NSCoding(归档和解档)
      • 3.2.2 字典 ----> 模型(利用runtime遍历模型对象的所有属性,根据属性名从字典中取出对应的值,设置到模型的属性上)
      • 3.2.3 KVO(利用runtime动态产生一个类)
      • 3.2.4 用于封装框架(有了运行时,想怎么改,就怎么改)
    • 3.3 相关函数
      • 3.3.1 objc_msgSend:给对象发送消息
      • 3.3.2 class_copyMethodList:遍历某个类所有的方法
      • 3.3.3 class_copyIvarList:遍历某个类所有的成员变量(属性)
      • 3.3.4 class_...一系列的方法
    • 3.4 必备常识
      1)Ivar:成员变量
      Method:成员方法
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 对于从事 iOS 开发人员来说,所有的人都会答出【runtime 是运行时】什么情况下用runtime?大部分人能...
    梦夜繁星阅读 3,734评论 7 64
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,789评论 0 9
  • 参考链接: http://www.cnblogs.com/ioshe/p/5489086.html 简介 Runt...
    乐乐的简书阅读 2,166评论 0 9
  • 文/雯子girl 离恨恰如春草,更行更远还生。 你留意过父母两鬓何时开始斑白的吗?你知道那爬上脸庞的皱纹时何时变深...
    蚊子告白阅读 445评论 1 4
  • wangsg先生阅读 87评论 0 0