1
需要在+load方法中进行方法替换,且只执行一次(使用dispatch_once)。这样做有两点
1.防止在其他线程中调用替换方法
2.防止手动调用load方法
2
被替换的方法必须是当前类的方法,如果替换了父类的方法,父类在调用方法的时候会出错(https://www.jianshu.com/p/b5e28d402834)。
3
交换的方法如果依赖了 cmd,那么交换后,如果 cmd 发生了变化,就会出现各种奇怪问题,而且这些问题还很难排查。特别是交换了系统方法,你无法保证系统方法内部是否依赖了 cmd
4
方法交换命名冲突。如果出现冲突,可能会导致方法交换失败
网友评论