IOS runtime

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 的自动归档和解档

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

推荐阅读更多精彩内容