iOS-分类重写原方法,如何调用原方法

1,057 阅读1分钟

分类中重写了原类方法导致原类中的方法被覆盖了,category的底层实现是在加载的时候,把category中的方法添加到原类的方法列表中,当调用方法时会遍历方法列表找到对应的响应子就返回,不再向下遍历。因为category的优先级高于类的优先级,使得原类中的选择子遍历不到。

这时候如果想在分类方法中调用原方法改怎么做呢?

可以去遍历方法列表,去查询最后一个test方法的selector,然后获取方法的指针地址来执行方法
如这样:

image.png

找到方法列表的最后一个与目标方法同名的方法然后去执行即可

分类同名方法并不是被“覆盖”,而是分类方法添加在了主类方法的前面,查找方法找到分类方法就执行了