其他分享
首页 > 其他分享> > Method Swizzling 为什么要先调用 class_addMethod?

Method Swizzling 为什么要先调用 class_addMethod?

作者:互联网

class_addMethod will add an override of a superclass's implementation, 

but will not replace an existing implementation in this class. 

To change an existing implementation, use method_setImplementation.

 

给指定Class添加一个SEL的实现(或者说是SEL和指定IMP的绑定),添加成功返回YES,SEL已经存在或添加失败返回NO。
它有两个需要注意的点:

如果该SEL在父类中有实现,则会添加一个覆盖父类的方法;
如果该Class中已经有SEL,则返回NO。

执行class_addMethod能避免干扰到父类,这也是为什么推荐大家尽量先使用class_addMethod的原因

标签:父类,implementation,addMethod,添加,Swizzling,SEL,class
来源: https://www.cnblogs.com/feng9exe/p/15906185.html