runtime.runloop

Runtime替换方法的风险

2021-03-12  本文已影响0人  梁森的简书

1

需要在+load方法中进行方法替换,且只执行一次(使用dispatch_once)。这样做有两点
1.防止在其他线程中调用替换方法
2.防止手动调用load方法

2

被替换的方法必须是当前类的方法,如果替换了父类的方法,父类在调用方法的时候会出错(https://www.jianshu.com/p/b5e28d402834)。

3

交换的方法如果依赖了 cmd,那么交换后,如果 cmd 发生了变化,就会出现各种奇怪问题,而且这些问题还很难排查。特别是交换了系统方法,你无法保证系统方法内部是否依赖了 cmd

4

方法交换命名冲突。如果出现冲突,可能会导致方法交换失败

上一篇下一篇

猜你喜欢

热点阅读