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

需要知识

class_ro ,class_rw

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

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

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


iOS-分类重写原方法,如何调用原方法_第1张图片
image.png

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

你可能感兴趣的:(iOS-分类重写原方法,如何调用原方法)