gpt4 book ai didi

objective-c - 寻找内存泄漏时仪器中的颜色

转载 作者:搜寻专家 更新时间:2023-10-30 19:45:19 25 4
gpt4 key购买 nike

我目前正在寻找我的 iPhone 应用程序中的内存泄漏。我正在使用 Instruments 来追踪导致泄漏的代码(越来越成为 Instruments 的 friend !)。现在 Instruments 显示两条线:一条为深蓝色(第 146 行),另一条为浅蓝色(第 150 行)。通过一些试验和错误,我发现它们以某种方式连接,但在 Objective-C 和内存管理方面还不够好,还没有真正理解如何连接。

有谁知道为什么使用不同的颜色以及我的问题是什么?

我曾尝试释放 numberForArray,但在选择器 View 中显示最后一行时应用程序崩溃。

感谢所有想法!

alt text

(发布这个我也意识到第 139 行是多余的!Se 那里,已经是一个改进;-)

最佳答案

好的,让我们看一下这段代码的对象分配/所有权行为......

numberForArray 被赋值为 -NSString stringWithFormat: 的结果,这是一个自动释放的对象。这意味着您不想发布它(正如您发现的那样)。

然后该对象被添加到 glucoseLoader NSMutableArray,它将保留。您循环 100 次,创建 100 个对象并将它们添加到 glucoseLoader。当 glucoseLoader 被释放时,在第 154 行,它也会释放所有添加到它的对象。

但等等,还有更多:firstComponentRange 是使用 -NSArray initWithArray:glucoseLoader 创建的。当您这样做时,源数组的所有元素都会添加到目标中,目标将再次保留它们。

那么,什么时候/如何释放 firstComponentRange

关于objective-c - 寻找内存泄漏时仪器中的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2941072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com