gpt4 book ai didi

iPhone委托(delegate)内存泄漏问题

转载 作者:行者123 更新时间:2023-12-03 18:06:14 26 4
gpt4 key购买 nike

我需要你的帮助,我对这个项目很感兴趣。

<删除>当我将应用程序运行到 Instruments 中时,→← 标记线会导致内存泄漏。当第一次运行时一切正常,但第二次→←标记线出现内存泄漏,我不明白为什么?我尝试了很多东西,我也使用了 NSAutoReleasePool 但结果相同。有人可以帮我吗? SBJSON *json = [[SBJSON alloc] init]; 错误=零; → NSDictionary *结果 = [json objectWithString:响应错误:&error]; ← [json发布]; [回应发布]; NSArray *responsedNetworks = [结果 objectForKey:@"networks"]; NSMutableArray *serverResponse = [[NSMutableArray alloc] initWithArray:responsedNetworks];编辑:我将示例应用程序上传到此地址:[已删除][1] 现在,我确定问题来源不是委托(delegate),但我不知道问题出在哪里,我确信仪器显示了错误的位置内存泄漏。我尝试了很多事情,有人可以告诉我我的错误吗?

谢谢

编辑 2:不幸的是,我尝试了 Clang 静态分析器,正如我预期的那样,它在某些代码行中给出了一些警告,我修复了这些警告。

现在,Instruments 出现泄漏错误,但 Clang 表示项目中没有错误。

最后,我的问题并没有消失。

请下载最新的示例应用程序,您可以用肉眼看到这是 EXAMPLE Project source

如何查看这些泄漏:打开项目并开始在模拟器上调试(版本无关紧要)。开始调试,您将在打开的第一个窗口的角落看到信息按钮。按下并打开它,然后关闭信息窗口并再次打开它,此时您应该看到仪器的泄漏消息。但 Clang 没有提供任何信息,我的意思是 Clang 方面一切都很好。

我真的很困惑吗?我该怎么办?

最佳答案

仪器未指示导致泄漏的管线。它指示分配了后来被泄漏的内存的行。仅从给出的代码(显然不是完整的代码)来看,我怀疑您正在泄漏 serverResponse,其中包括您标记的行中分配的内存。不要只看 Instruments 为您提供的线路。哪个类正在泄漏?这将提供与该行一样多的提示。

由于您开始在内存管理方面遇到麻烦,因此建议:当您释放某些内容时,始终将其设置为 nil。这将为您避免很多头痛和以后的崩溃。在本例中,我讨论的是 jsonresponse:

[json release];
json = nil;

如果您有 Snow Leopard 和 Xcode 3.2,请运行分析器 (Cmd-Shift-A)。它会自动发现最常见的内存问题。

关于iPhone委托(delegate)内存泄漏问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1952696/

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