method swizzle

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值