引用计数等于0的对象仍然是持久的

时间:2012-06-13 08:57:48

标签: objective-c ios memory-leaks instruments reference-counting

我正在尝试增强非ARC应用中的内存分配。 有些对象即使引用计数为0,也会在两个快照之间列为持久对象。

这是我的快照视图:enter image description here

让我们在第一个快照(0x6deb180)中选择所选的LSBookChapter。 这是该对象的历史:

enter image description here

为什么该对象未被释放?如果引用计数为0,那么当我保留该对象时,我无法弄明白。

2 个答案:

答案 0 :(得分:6)

你可能打开了僵尸检测?

僵尸检测不会释放任何内容,但是 - 可能 - 保留计数将降至零,更有用的是,您将看到保留导致和释放导致事件之间的一对一对应。


此外,如果你没有打开“仅跟踪实时分配”,那么你将在解除分配后看到工具中的对象,保留计数为0,但实际上已经解除分配。

答案 1 :(得分:1)

在我以前的申请中,我现在有一些担忧,因为我没有泄漏,但记忆力正在增长。经过一番研究,我偶然发现this。我确实试图在他的文章上做一些快捷方式,但最后我只是阅读了整个事情来实际理解错误。是的,我能够找出我遇到的每一个问题。我可能会说我有很多。

对于您的特定问题,我现在没有做您正在尝试的事情:在不同的快照中查看对象的retainCount。我认为这是浪费时间。我的主要目标是确保如果我做了某些事情并且我将其反转,则内存不应该增加,或者它应该稍微增加(快速示例:进入新的UIViewController并按下按钮)。