2016笔记——Leaks
2018-07-27 本文已影响8人
满庭花醉三千客
Instrument如此强大,为何不好好使用呢?
先来看看前几天就代理展开的讨论(代理为什么要用weak修饰)。
现在来看看能不能检测到leak。
首先Command + I 打开Instrument,进入如下界面:
屏幕快照 2016-02-29 16.00.44.png选择Leaks,然后就会进入如下界面:
屏幕快照 2016-02-29 16.01.52.png店家左上角的红色按钮,运行模拟器。
界面就会如下显示:
屏幕快照 2016-02-29 16.03.14.png看到第二行(Leak Checks)的红色叉叉了么?
好了,有事干了,发生内存泄漏了。
选中第二行(Leak Checks),界面显示如下:
屏幕快照 2016-02-29 15.56.19.png看到中间的菜单栏了吗?对,点击到Leaks,它会变成这个样子:
屏幕快照 2016-02-29 15.56.44.png我们切换到Call Tree,界面此时是这样的:
屏幕快照 2016-02-29 15.57.08.png剩下就关键了,界面的右下侧有一个菜单边栏,我们需要进行勾选Invert Call Tree和Hide System Libraries。
屏幕快照 2016-02-29 15.57.19.png此时,界面下部显示的分析内容就变成这样了:
屏幕快照 2016-02-29 15.57.30.pngOK了,定位到代码了,双击某一行,然后会跳转到对应的文件中:
屏幕快照 2016-02-29 16.14.20.png剩下的就是修改了,这里不再拓展。
额外的收获:
中间的菜单栏,分别为Leaks、Cycles && Roots、Call Tree.我点击了一下Cycles && Roots,然后是这样的效果了:
屏幕快照 2016-02-29 15.57.44.png哇哦,直接帮我分析出来是怎么出现泄漏的了呀,Person 通过属性引用Dog,Dog通过delegate引用Person。真的好厉害呀~
此外,可能觉得对其中的灰色的菱形中的-号有点迷糊,说一下,其实那个是自动拍照,我们可以设置它自动拍照的时间间隔:
屏幕快照 2016-02-29 16.21.23.png默认是十秒,我这里改为3秒,然后就是这样的效果啦~么么哒
加油~