同名分类方法谁能生效取决于编译顺序理解

来源:4-11 属性关键字相关面试问题&面试总结

慕UI3169796

2019-02-13

同名分类方法谁能生效取决于编译顺序,也就是说后编译的分类中的方法会生效。这是不是因为在消息查找中找到了想要的方法名称就return了,不再继续查找了,我这么理解对吗?还是有别的理解,这不是很明白

写回答

3回答

薛定谔与猫

2019-09-06

  1. 取决于编译顺序,编译顺序不受我们代码控制也就是可能同样的代码在不同的电脑上编译顺序不同

  2. 在方法列表中找到对应的方法,runtime就返回了,不会继续查找

0
0

JerseyCafe

2019-03-14

主要原因是两个因素

  1. Category 在 runtime 机制下对原有类的 method 添加的机制, 会循环变量当前 objc_object method_list 将分类的方法依次插入到最前面的。

  2. 老师说的 方法查找机制的原因。一旦查找到同名方法立即返回。

   那么最后编译的方法是在当前 mehtod_list 的最前面的, 自然会被调用

0
0

于海

2019-02-13

方法查找按照选择器因子查找,一旦找到即返回,即使后面还有同名方法

0
0

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

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

1749 学习 · 600 问题

查看课程