method swizzling交换两个方法,父类中已经存在方法则会把父类中的方法覆盖但是不会受到影响,该如何理解?
来源:9-1 Method Swizzling处理数组越界-原理分析
慕用8453459
2019-07-01
使用method swizzling交换两个方法的时候 需要把需要交换的两个方法先添加进去,如果父类中没有会成功;如果父类中已经存在方法则会把父类中的方法覆盖,实际交换的也是交换的也是当前这个类的方法而不会影响到父类中的方法?既然都覆盖了父类的方法为什么不会影响呢?该如何理解?
写回答
1回答
-
逆风
2019-07-01
添加方法是直接添加到自己方法列表,和父类没关系。
为了避免影响到父类的方法,要先添加方法。是指:
调用method_exchangeImplementations时,会用到class_getInstanceMethod方法,而这个方法会走IMP查找流程,如果自己没有实现,可能会查找到父类,然后把父类的方法给交换了。
012019-07-01
相似问题
关于Class的两个问题
回答 1
分类覆盖同名方法,以及消息查找问题。
回答 1