需要知识
class_ro ,class_rw
分类中重写了原类方法导致原类中的方法被覆盖了,category的底层实现是在加载的时候,把category中的方法添加到原类的方法列表中,当调用方法时会遍历方法列表找到对应的响应子就返回,不再向下遍历。因为category的优先级高于类的优先级,使得原类中的选择子遍历不到。
这时候如果想在分类方法中调用原方法改怎么做呢?
可以去遍历方法列表,去查询最后一个test方法的selector,然后获取方法的指针地址来执行方法
如这样:
找到方法列表的最后一个与目标方法同名的方法然后去执行即可