Xcode工具:内存泄漏

3
在XCode 7的内存泄漏工具中,时间轴上的那些十字架和带减号的灰色形状代表什么?我在文档中找不到相关信息,并且它们经常出现在时间轴上。

enter image description here

我得到了一个泄漏对象的长列表(这是在过去几年中开发的一个大项目)。这个列表应该总是为空吗?还是在运行应用程序时出现一些泄漏是正常的?或者这意味着代码编写不好?

enter image description here


Xcode 的版本是多少? - Anoop Vaidya
@AnoopVaidya xCode 7.2 - aneuryzm
2个回答

3
我可以回答第一个问题。Leaks工具每10秒钟检查一次内存泄漏。如果Leaks工具发现自上次检查以来有新的泄漏,它会显示一个带有X的红色符号(红叉)。带有减号的灰色符号表示Leaks工具已经发现了内存泄漏,但是自上次检查以来没有新的泄漏。
目标是让Leaks工具显示一个带有勾号的绿色符号。这意味着没有发现泄漏。 总结
Green: no leaks 
Gray: no new leaks 
Red: new leaks

不错,加一。我没有机会使用Xcode7.x,否则我也可以给出答案...只是在思考 :) - Anoop Vaidya
@AnoopVaidya 嗯,我猜没人像你一样聪明;) - aneuryzm

1

仅作为一个想法:这个列表应该总是为空吗?或者在运行的应用程序中出现一些泄漏是正常的,还是意味着它是糟糕的编写代码?

不,这不是正常情况,这肯定是一段有很多泄漏的丑陋代码。

如果你正在处理这个应用程序,你应该尝试将泄漏减少到零,或者最小化到可接受的状态(我指的是一些泄漏来自第三方库)。

即使我曾经在一个拥有2K个类并已经投入生产使用了十年的项目上工作,也没有任何泄漏,但每次发布时我们都会发现一些并将其删除,否则客户将不接受代码。


谢谢,时间轴上的红叉符号怎么处理? - aneuryzm
@Patrick:抱歉,我会尽快检查并更新给你。我仍在使用Xcode 6.x版本,在这里我没有看到这些红色叉号。 - Anoop Vaidya
嗯,我不确定是否理解了。“目标数量”? - aneuryzm
@Patrick:我也猜了。也许这个应用程序有多个目标,默认情况下有两个,一个是应用程序本身,另一个是appTests。 - Anoop Vaidya
那些红色/灰色的符号如何与目标数量匹配?你确定你理解我所指的是什么吗?(问题中的第一张图片) - aneuryzm
很好,为客户消除漏洞。好客户 ;) - aneuryzm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接