RunTime的学习

OC的特性是:

消息分发,是动态调用过程,就是在编译时并不知道消息的接收对象,只有在运行时才会才会根据函数的名称找到对应的函数来调用,,在运行过程中都是转成了runtime的C语言代码,真正的boss是runtime。

类的组成在:

isa指针;;super_class父类;;cache方法混存区;;Version类的版本信息;;objc_method_list存放类的成员方法

调用方法过程:

例如当我们去调用respondsToSelector:这个方法时,调用对象首先会先根据isa找到对应的类(class),先去chahe中查找这个方法是否缓存过,没有的话再去遍历methodLists,如果还没有就根据super_class找到父类,再去像之前那样查找这个方法,知道super_class为nil,就无法找到这个方法了,则返回NO。

常见作用:

1.动态的添加对象的成员变量和方法,修改属性值和方法

2.动态交换两个方法的实现

3.实现分类也可以添加属性

4.实现NSCoding的自动归档和解档

5.实现字典转模型的自动转换

6.动态创建一个类(比如KVO的底层实现)

代码实践:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,831评论 0 9
  • 这篇文章完全是基于南峰子老师博客的转载 这篇文章完全是基于南峰子老师博客的转载 这篇文章完全是基于南峰子老师博客的...
    西木阅读 30,712评论 33 466
  • 参考链接: http://www.cnblogs.com/ioshe/p/5489086.html 简介 Runt...
    乐乐的简书阅读 6,447评论 0 9
  • 我们常常会听说 Objective-C 是一门动态语言,那么这个「动态」表现在哪呢?我想最主要的表现就是 Obje...
    Ethan_Struggle阅读 6,586评论 0 7
  • 越来越喜欢比较轻浅而简单的思想 喜欢轻松而惬意的时光 像入伏天的傍晚 放足行走 以收拾潦草的情绪 去抵抗那些沉闷或...
    果木子阅读 708评论 0 0