黑魔法的注意的一些点

使用黑魔法替换系统方法时,替换的方法必须是适用于需要替换方法的属于的类以及子类,例如在UIScrollView的分类中使用replace_setBackgroundColor:替换掉setBackgroundColor:方法,将会出现奔溃,原因是UIScrollView的方法来源于UIView的方法,而指向UIView的setBackgroundColor:方法的除了UIScrollView之外,其它的子类也都有涉及,而实现方法的指针被指向了UIScrollView的该分类方法,如果是UIScrollView以及其子类,是没有问题的。但是如果是UIWindow这些只属于UIView子类的方法,将出现无法在此类方法列表中找到replace_setBackgroundColor:方法的问题而出现奔溃。正确的处理方法是先写个UIView的分类,然后在此分类中实现replace_setBackgroundColor:方法。总结:在分类中只能去替换该类和其子类独有的方法。

posted @ 2018-07-23 18:03  雨筱逸悠  阅读(112)  评论(0编辑  收藏  举报