gpt4 book ai didi

iphone - 在 XCode 中使用仪器进行内存泄漏检查?

转载 作者:行者123 更新时间:2023-12-03 21:07:46 25 4
gpt4 key购买 nike

美好的一天,

我在检查内存泄漏方面完全没有经验,因此对此的任何帮助都会很棒。

我刚刚完成了 iPhone 应用程序的大部分工作,现在我正在尝试找出为什么它在运行几次后停止工作。在泄漏和分配模式下使用仪器,我可以看到有两个对象正在快速堆积内存并且没有释放: enter image description here

我不是百分百确定发生这种情况的地点或原因,但是当我单击 UIDeviceRGBColor 右侧的箭头时,负责任的调用者被声明为

[UIColor allocWithZone];

我在我的项目中搜索了 UIColor 并找到了这个(记下 _colorThreshold):

enter image description here

我相信我的问题与 _colorThreshold 有关,它似乎没有被释放:

enter image description here

我尝试将 autorelease 添加到其初始化参数中,但这导致应用程序崩溃。这里有什么建议吗?

<小时/>

编辑 1

这是 LevelMeter.h enter image description here 的屏幕截图

最佳答案

上述有几个问题:

  • LevelMeterColorThreshold 是 Objective-C 类吗?
  • 如果是这样,为什么要使用 malloc 而不是通常的 alloc/init?
  • 当您粘贴搜索结果的屏幕截图时,我们看不到周围的代码,因为只显示搜索命中的行。

Leaks 工具是否报告泄漏,或者您只是分配了不必要的内存?
这两种情况有一个区别:

  1. 如果您丢失了对某个对象的引用,以致以后无法向其发送 release 消息,则会发生泄漏。
  2. 实例化不再需要的对象,无需释放它们

泄漏只能检测到第一种情况。
泄漏样本:

NSMutableString* test = [[NSMutableString alloc] initWithString:@"1"];
NSLog(@"%@", test);
NSMutableString* anotherTest = [[NSMutableString alloc] initWithString:@"2"];
test = anotherTest; //here we loose reference to the original object
NSLog(@"%@", test);

通过分配 anotherTest 来测试,我们丢失了指向包含@“1”的内存地址的引用。

关于iphone - 在 XCode 中使用仪器进行内存泄漏检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5610939/

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