我正在尝试增强非ARC应用中的内存分配。 有些对象即使引用计数为0,也会在两个快照之间列为持久对象。
这是我的快照视图:
让我们在第一个快照(0x6deb180)中选择所选的LSBookChapter。 这是该对象的历史:
为什么该对象未被释放?如果引用计数为0,那么当我保留该对象时,我无法弄明白。
答案 0 :(得分:6)
你可能打开了僵尸检测?
僵尸检测不会释放任何内容,但是 - 可能 - 保留计数将降至零,更有用的是,您将看到保留导致和释放导致事件之间的一对一对应。
此外,如果你没有打开“仅跟踪实时分配”,那么你将在解除分配后看到工具中的对象,保留计数为0,但实际上已经解除分配。
答案 1 :(得分:1)
在我以前的申请中,我现在有一些担忧,因为我没有泄漏,但记忆力正在增长。经过一番研究,我偶然发现this。我确实试图在他的文章上做一些快捷方式,但最后我只是阅读了整个事情来实际理解错误。是的,我能够找出我遇到的每一个问题。我可能会说我有很多。
对于您的特定问题,我现在没有做您正在尝试的事情:在不同的快照中查看对象的retainCount。我认为这是浪费时间。我的主要目标是确保如果我做了某些事情并且我将其反转,则内存不应该增加,或者它应该稍微增加(快速示例:进入新的UIViewController
并按下按钮)。