Runtime数据结构
一、objc_object
二、objc_class、cache_t、class_data_bits_t、class_rw_t、class_ro_t、method_t
三、isa指针、isa指向
对象、类对象、元类对象
消息传递
-
缓存查找
-
当前类中查找
- 对于已排序好的列表,采用二分查找算法查找方法对于执行函数。
- 对于没有排序的列表,采用一般遍历查找方法对应执行函数。
-
父类逐级查找
消息转发
Method-Swizzling
动态添加方法
动态方法解析
- @dynamic
- 动态运行时语言将函数决议推迟到运行时。
- 编译时语言在编译期进行函数决议。 小码哥iOS学习笔记第十四天: @dynamic
Runtime实战
[obj foo]和objc_msgSend()函数之间有什么关系?runtime如何通过Selector找到对应的IMP地址的?- 能否向
编译后的类中增加实例变量?