内存泄漏问题排查

最近有时间,对项目做一下整体的内存泄漏排查,使用的框架是MLeaksFinder
使用起来非常的方便,直接pod 一下就好了,在操作过程中,那个控制器没有销毁,会弹出一个alert,提示你是哪个控制器或者view 没有销毁

image.png

剩下的就是自己一步步排查,排查思路,主要的循环引用都出现在block中,

image.png

这样使用变量会导致循环引用,解决办法

image.png

这样就解决这个循环引用了
私有成员变量在block如何避免循环引用

至于原因请看oc block 中直接引用成员变量 循环引用

原因是oc是动态语言,实例变量的地址可能被其他实例变量占用,直接引用的话容易出问题。

retain self的好处是当类的定义变了,其存储的偏移量也变了,偏移量会在运行时查找,这样的话无论何时访问总能得到正确的地址,甚至可以在运行时新增变量。

你可能感兴趣的:(内存泄漏问题排查)