两个分类的同名方法生效问题我还是有疑问。

来源:4-2 分类相关面试问题-1

jjyygg4001948

2018-04-06

如果是先访问最后编译的分类的话,那么两个分类的同名方法,不是应该先取出最后编译的方法,然后之后访问的分类中的同名方法会覆盖之前的方法吗?那么最终生效的不应该是之后访问的编译的分类吗?

写回答

1回答

于海

2018-04-06

所有分类当中的方法最后会按照分类编译顺序的倒序(最后编译最先添加),将各分类方法列表添加到class_rw_t的二维数组结构的method_lists列表当中,我们在调用一个方法实现的时候根据选择器因子即sel到这个method_lists当中查找对应的方法实现,即imp从头遍历自然最终生效的是最后参加编译的,因为最后编译的放到了method_lists的头部

1
1
jjyygg4001948
非常感谢!
2018-04-10
共1条回复

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

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

1749 学习 · 600 问题

查看课程