2016技术笔记

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.png

OK了,定位到代码了,双击某一行,然后会跳转到对应的文件中:

屏幕快照 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秒,然后就是这样的效果啦~么么哒

加油~

上一篇下一篇

猜你喜欢

热点阅读