前言
runtime 的黑魔法很多人都一定听过,或者已经在使用了。但是,怎么swizzle方法才是最好呢?
一般写法
1 | Method originalMethod = class_getInstanceMethod(aClass, originalSel); |
或者是下面这种方式,swizzle第二种写法:
1 | Method originalMethod = class_getInstanceMethod(aClass, originalSel); |
更好写法
其它,这样写,一般不会有问题,但是在一些情况下,比如这个hook的类没有实现你要swizzle的方法,这时是没有swizzle成功的,然后你自己写的 swizzle 里又自己调用自己,就无限循环。
1 | Method originalInsMethod = class_getInstanceMethod(class, originalSelector); |
总结
至于这个为什么会更好? 有时间在慢慢说啦~
参考
- 利用ios的hook机制实现adobe air ios ane下appdelegate的动态替换 - CSDN博客
- Method结构, SEL, IMP理解 - Vanbein’s Blog
- 深入理解 Objective-C 的方法调用流程 - 简书
- [iOS]在运行时为类添加方法
- Runtime中Swizzle时你可能没注意到的问题 - 简书
- Hello World
> 注:本文首发于 [iHTCboy's blog](http://iHTCboy.com),如若转载,请注来源