最近有時(shí)間麦到,對(duì)項(xiàng)目做一下整體的內(nèi)存泄漏排查手幢,使用的框架是MLeaksFinder
使用起來非常的方便这弧,直接pod 一下就好了娃闲,在操作過程中,那個(gè)控制器沒有銷毀当宴,會(huì)彈出一個(gè)alert畜吊,提示你是哪個(gè)控制器或者view 沒有銷毀
image.png
剩下的就是自己一步步排查,排查思路户矢,主要的循環(huán)引用都出現(xiàn)在block中玲献,
image.png
這樣使用變量會(huì)導(dǎo)致循環(huán)引用,解決辦法
image.png
這樣就解決這個(gè)循環(huán)引用了
私有成員變量在block如何避免循環(huán)引用
至于原因請(qǐng)看oc block 中直接引用成員變量 循環(huán)引用
原因是oc是動(dòng)態(tài)語言梯浪,實(shí)例變量的地址可能被其他實(shí)例變量占用捌年,直接引用的話容易出問題。
retain self的好處是當(dāng)類的定義變了挂洛,其存儲(chǔ)的偏移量也變了礼预,偏移量會(huì)在運(yùn)行時(shí)查找,這樣的話無論何時(shí)訪問總能得到正確的地址虏劲,甚至可以在運(yùn)行時(shí)新增變量托酸。