MLeaksFinder关闭

项目中用cocopods引入了MLeaksFinder进行内存泄漏的检查,但是打debug包的时候有时候不想去开启这个功能让别人看到,又不想去改MLeaksFinder的源码。那么怎么才能实现呢?
很简单,我们可以看到源码中有一个NSObject的分类,它给每一个NSObject的类及子类添加了一个willDealloc方法,他在进行内存泄漏检查的时候都是在willDealloc这个方法里去进行的调用。并且我们发现,当我们的项目中出现内存泄漏的时候,我们的控制台会打印这么一句
Possibly Memory Leak In case that.....这里它就是告诉你,如果你确定MLeaksFinder提示的这个类没有发生内存泄漏,你可以override这个类的-willDealloc这个方法,使其returning NO就可以不提示了。
那么既然是这么简单就可以忽略这个类的内存泄漏检查,我们如何一次性忽略所有的类呢?
hook方法呗。直接hook NSObject的willDealloc方法就行了。因为OC是编译型,在编译的时候,willDealloc已经添加到了NSObject的方法列表里。在运行时执行load方法,就可以成功执行方法交换了。所有如果你有疑问load的时候怎么会知道NSObject的分类已经执行并添加了方法呢。这就是原因所在啦。

有啥想说的,欢迎留言评论。互相学习。

你可能感兴趣的:(MLeaksFinder关闭)