什么是method swizzling

Posted StarainDou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是method swizzling相关的知识,希望对你有一定的参考价值。

其实跟字面的意思很相近。方法的调和。可以去修改oc中两个方法的调用。

这张图看起来会比较形象

技术分享
20130718230430859.png

就是把两个实现调换
具体的做法,
首先,用Categroy建立自己的方法。
在+load方法中去实现方法交换的代码(load可以保证被调用,其他方法都不靠谱)

        Method ori_Method =  class_getInstanceMethod([MYclass class], @selector(lastObject));  
        Method my_Method = class_getInstanceMethod([MYclass class], @selector(myLastObject));  
        method_exchangeImplementations(ori_Method, my_Method);

一定要记住,你的方法实现已经变了。

 

starain Dou 豆电雨

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

文/natewang(简书作者)
原文链接:http://www.jianshu.com/p/1bbd5bbab267
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

以上是关于什么是method swizzling的主要内容,如果未能解决你的问题,请参考以下文章

java.lang.NullPointerException: Attempt to invoke virtual method ‘int android.database.sqlite异常(代码片段

如何将 View 类中的代码片段移动到 OnAppearing() 方法?

Android获取各个应用程序的缓存文件代码小片段(使用AIDL)

C# 最有用的(自定义)代码片段是啥? [关闭]

javaSE_07_方法

此 Canon SDK C++ 代码片段的等效 C# 代码是啥?