三、RunTime

2021-07-14  本文已影响0人  Miss_DQ

注:本文集为自己准备面试时,系统复习的笔记,如大家有兴趣,欢迎阅读并指正


image.png

对象、类对象、元类对象

类对象:存储实例方法列表等信息。
元类对象:存储类方法列表等信息。


image.png

消息传递

void objc_msgSend(self,@selector(class))
void objc_msgSendSuper(super,@selector(class))

消息传递流程图

缓存查找:
例:给定值是SEL,目标值是对应bucket_t中的IMP?通过哈希查找cache_key_t -> bucket_t
当前类中查找:
1.对于已排序好的列表,采用二分查找算法查找方法对应执行函数。
2.对于没有排序的列表,采用一般遍历进行查找
父类逐级查找:


image.png

消息转发

image.png

Method-Swizzing

方法交换

动态添加方法

erformSelector:编译时无该方法,运行时执行该方法

class_addMethod(self,@selector(test),testImp,@"v@:");

动态方法解析

@dynamic 运行时给属性添加setter和getter方法

Runtime实战

上一篇下一篇

猜你喜欢

热点阅读