Update Log:
2017.8.24: 初版
2017.10.8: 添加無(wú)法使用的解決辦法
升了xcode9使用這個(gè)工具的時(shí)候發(fā)現(xiàn)不顯示了.原來(lái)需要打開Zombie Objects.打開路徑為 Edit Scheme -> Diagnostics -> 勾選Zombie Objects
一.循環(huán)引用檢查工具
當(dāng)你進(jìn)入一個(gè)vc.然后退出的時(shí)候.發(fā)現(xiàn)他沒(méi)走dealloc方法.
然后把這個(gè)vc里的代碼從頭到尾檢查了一遍.找到了一個(gè)循環(huán)引用的bug,
修復(fù)后,滿心歡喜的運(yùn)行.
進(jìn)入vc再退出發(fā)現(xiàn)還是沒(méi)走dealloc.
不知道你的內(nèi)心如何.反正我的內(nèi)心是毫無(wú)波瀾只有一句***.
現(xiàn)在有個(gè)很好的工具可以直接顯示是誰(shuí)強(qiáng)引用了這個(gè)vc.不需要你從頭到尾一行行找.
二.工具使用方法
這個(gè)是xcode自帶工具.不過(guò)只能在模擬器下使用.
1.首先進(jìn)入你覺(jué)得可能沒(méi)有被正常釋放的vc.然后退出.
2.點(diǎn)擊調(diào)試工具欄里的Debug Memory Graph工具.如圖.

3.搜索你覺(jué)得可能沒(méi)被釋放的VC的類名
進(jìn)入Debug Memory Graph工具后.
在左側(cè)搜索欄搜索你覺(jué)得可能沒(méi)被釋放的VC的類名.
在圖中2處就可以找到該類(如果他確實(shí)沒(méi)被釋放就一定能找到他)
還可以查看類后面的數(shù)字(即該類現(xiàn)在在內(nèi)存里存在的實(shí)例數(shù)量).
如果數(shù)量過(guò)多也可能內(nèi)存泄漏了.可以檢查一下這個(gè)類存在這么多實(shí)例正不正常.

4.在右側(cè)觀看誰(shuí)強(qiáng)引用了該vc.導(dǎo)致他沒(méi)被釋放.
這里很明顯該VC被block強(qiáng)引用了.
該block是被VideoApi持有的.

5.定位代碼
在該vc類文件里搜索VideoApi關(guān)鍵字.
發(fā)現(xiàn)在api的回調(diào)block里使用了 _page.
沒(méi)有使用weakself調(diào)用. (應(yīng)該使用self->_page)
導(dǎo)致了內(nèi)存泄漏.

6.恩.大吉大利.晚上吃雞!