method swizzle

来源:互联网 发布:图片php 如何保存 编辑:程序博客网 时间:2024/06/07 17:28

认知:oc动态运行时,改变成员方法的指针的指向,使其类成员方法的指针指向我们想要的方法的实现 IMP 指针。这里我们是在 Dispatch Table中操作,其实所谓的方法互换,就是互换了两个sel指针的指向。

注意点: 在+(void)load 方法中加载,原因,由于method swizzling会影响到类的全局状态,因此要避免在并发处理中的竞争情况,。
因为swimming会改变全局状态,因此我们要让他具有原子性,即线程安全。

应用场景: (我在项目中,只用到过一种解决情型)
1.防止数组越界
对于oc来说,如果数组越界会影响该app的进程直接kill,退出,所以给nsarray,添加一个分类,利用swimming把objectAtIndex:方法指针的指向,指向我们自己的方法的实现。(即交换,两个方法指针的指向)

0 0
原创粉丝点击