美文网首页
IOS runtime

IOS runtime

作者: 小暖风 | 来源:发表于2018-01-24 15:29 被阅读1次

    1.对象能够接收的消息列表保存在它所对应的类中。类能够接受的消息列表保存在它所对应的元类中。

    2.可以在类别中,给类添加属性,譬如 给 NSString对象添加 是否为空的属性,get方法返回结果,set方法实现逻辑。objc_setAssociatedObject,objc_getAssociatedObject。这两个API方法。

    runtime(简称运行时),是一套 纯C(C和汇编写的) 的API。而 OC 就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制。

    消息机制原理:对象根据方法编号SEL去映射表查找对应的方法实现。

    调用对象方法的本质是给对象发送消息。

    消息机制方法调用流程:

    对象方法:(保存到类对象的方法列表) ,类方法:(保存到元类(Meta Class)中方法列表)。

    1.OC 在向一个对象发送消息时,runtime库会根据对象的isa指针找到该对象对应的类或其父类中查找方法。。

    2.注册方法编号(这里用方法编号的好处,可以快速查找)。

    3.根据方法编号去查找对应方法。

    4.找到只是最终函数实现地址,根据地址去方法区调用对应函数。

    一个objc对象的isa的指针指向什么?有什么作用?

    每一个对象内部都有一个isa指针,这个指针是指向它的真实类型,根据这个指针就能知道将来调用哪个类的方法。

    runtime 常见作用

    动态交换两个方法的实现

    动态添加属性

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

    发送消息

    动态添加方法

    拦截并替换方法

    实现 NSCoding 的自动归档和解档

    相关文章

      网友评论

          本文标题:IOS runtime

          本文链接:https://www.haomeiwen.com/subject/vlyuaxtx.html