Xcode7自带的Instruments
2015-11-23 20:43
483 查看
xcode7发布以后,对Instruments新的界面总感觉和陌生,网上看到这篇文章因此转载稍做修改,希望能对同样感觉陌生的小伙伴有帮助。
作为一名iOS开发攻城狮,在苹果没有出ARC(自动内存管理机制)时,我们几乎有一半的开发时间都耗费在这么管理内存上.后来苹果很人性的出了ARC,虽然在很大程度上,帮助我们开发者节省了精力和时间.但是我们在开发过程中,由于种种原因,还是会出现内存泄露的问题.内存泄露是一个很严重的问题.下面就简单介绍下怎么使用Xcode自带的Instruments中的Leaks检测我们的程序有没有内存泄露和定位内存泄露的代码.(分析内存泄露不能把所有的内存泄露查出来,有的内存泄露是在运行时,用户操作时才产生的)
第一步:打开Xcode7自带的Instruments
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009091643924-595728852.png)
或者:
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009091749081-130873097.png)
按上面操作,build成功后跳出Instruments工具,选择Leaks选项
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009092041784-1470480543.png)
选择之后界面如下图:
到这里之后,我们前期的准备工作做完啦,下面开始正式的测试!
1.选中Xcode先把程序(command + R)运行起来
2.再选中Xcode,按快捷键(command + control + i)运行起来,此时Leaks已经跑起来了
3.由于Leaks是动态监测,所以我们需要手动操作APP,一边操作,一边观察Leaks的变化,当出现红色叉时,就监测到了内存泄露,点击右上角的第二个,进行暂停检测(也可继续检测,当多个时暂停,一次处理了多个).如图所示:
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009093354378-307036239.png)
4.下面就是定位修改了,此时选中有红色柱子的Leaks,下面有个"田"字方格,点开,选中Call Tree
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009093833143-1343849154.png)
显示如下图界面
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009094008440-840369021.png)
5.下面就是最关键的一步,在这个界面的右下角有若干选框,选中Invert Call Tree 和Hide System Libraries,(红圈范围内)显示如下:
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009094249174-5472541.png)
到这里就算基本完成啦,这里显示的就是内存泄露代码部分,那么现在还差一步:定位!
6.选中显示的若干条中的一条,双击,会自动跳到内存泄露代码处,如图所示
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009094428549-1202234999.png)
7.找到了内存泄露的地方,那么我们就可以修改即可
Instruments也只是提供给开发者优化应用的基本工具,然而工具中得到的数据还需要一定的分析并修改,这就要求有一定的经验。缺乏经验的可以多去尝试多请教。
作为一名iOS开发攻城狮,在苹果没有出ARC(自动内存管理机制)时,我们几乎有一半的开发时间都耗费在这么管理内存上.后来苹果很人性的出了ARC,虽然在很大程度上,帮助我们开发者节省了精力和时间.但是我们在开发过程中,由于种种原因,还是会出现内存泄露的问题.内存泄露是一个很严重的问题.下面就简单介绍下怎么使用Xcode自带的Instruments中的Leaks检测我们的程序有没有内存泄露和定位内存泄露的代码.(分析内存泄露不能把所有的内存泄露查出来,有的内存泄露是在运行时,用户操作时才产生的)
第一步:打开Xcode7自带的Instruments
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009091643924-595728852.png)
或者:
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009091749081-130873097.png)
按上面操作,build成功后跳出Instruments工具,选择Leaks选项
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009092041784-1470480543.png)
选择之后界面如下图:
到这里之后,我们前期的准备工作做完啦,下面开始正式的测试!
1.选中Xcode先把程序(command + R)运行起来
2.再选中Xcode,按快捷键(command + control + i)运行起来,此时Leaks已经跑起来了
3.由于Leaks是动态监测,所以我们需要手动操作APP,一边操作,一边观察Leaks的变化,当出现红色叉时,就监测到了内存泄露,点击右上角的第二个,进行暂停检测(也可继续检测,当多个时暂停,一次处理了多个).如图所示:
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009093354378-307036239.png)
4.下面就是定位修改了,此时选中有红色柱子的Leaks,下面有个"田"字方格,点开,选中Call Tree
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009093833143-1343849154.png)
显示如下图界面
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009094008440-840369021.png)
5.下面就是最关键的一步,在这个界面的右下角有若干选框,选中Invert Call Tree 和Hide System Libraries,(红圈范围内)显示如下:
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009094249174-5472541.png)
到这里就算基本完成啦,这里显示的就是内存泄露代码部分,那么现在还差一步:定位!
6.选中显示的若干条中的一条,双击,会自动跳到内存泄露代码处,如图所示
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009094428549-1202234999.png)
7.找到了内存泄露的地方,那么我们就可以修改即可
Instruments也只是提供给开发者优化应用的基本工具,然而工具中得到的数据还需要一定的分析并修改,这就要求有一定的经验。缺乏经验的可以多去尝试多请教。
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- 举例详解iOS开发过程中的沙盒机制与文件
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- 分享一个iOS下实现基本绘画板功能的简单方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器