Method-Swizzling实现位置

来源:5-6 Method-Swizzling相关面试问题

qq_許鍀諾言_0

2021-10-28

课程Method-Swizzling是runtime运行时这块知识点,所以我能够理解可以在分类中去实现method_exchangeImplementations() 函数,因为分类也是动态加载的,但是我也尝试把method_exchangeImplementations函数放在某个自定义的根控制器去去实现,发现也是可以的.就比较疑问method_exchangeImplementations函数本身就是动态函数吗? 是不是也可以理解为只要程序加载进行runtime动态运行就会把项目里所有的动态函数如:method_exchangeImplementations函数 都会进行预处理实现然后再进行编译吗?

写回答

1回答

于海

2021-10-28

嗯,OC本身就是动态运行时语言,方法和函数还是有区别的。runtimr过程有个方法查找的过程,再去执行实际的具体实现,即IMP。交换函数其实是在交换方法执行的imp指向

0
0

资深大牛带你深度剖析ios高级面试

从BAT/TMD名企真题入手,结合源码及应用,构建完整iOS知识体系

1749 学习 · 600 问题

查看课程