1.如果类目的方法跟隐藏方法冲突,会覆盖系统的,会造成使用系统方法,结果调用你写的。你可能会觉得这不基本的覆盖问题吗!但我这说的是隐藏方法,而且即使没有导入的类目的私有方法也会覆盖系统的方法。
NSObject+ChanHook中,我写了一个uuid方法 在viewController,获取照片url例如在上面两张图中,获取相册url,系统会去执行一个隐藏的uuid方法,结果却执行了我类目写的uuid。
系统的uuid得到的url:assets-library://asset/asset.JPG?id=106E99A1-4F6A-45A2-B320-B0AD4A8E8473&ext=JPG。
类目的uuid得到的url:assets-library://asset/asset.JPG?id=318e46f140e84d34a8124e6391f65dd7&ext=JPG。
看出两个url中id这个值的区别了吧。
2.如果使用切面编程,你所hook的对象写了跟你类目相同的方法,客户的会覆盖你的,可能造成你的hook无法正常工作。
所以,要用类目,那最好命名别人不可能命名的,除非你本身就是要覆盖方法。
网友评论