gpt4 book ai didi

iphone - 为什么 SimpleEKDemo 代码中存在内存泄漏?

转载 作者:行者123 更新时间:2023-11-28 20:46:09 25 4
gpt4 key购买 nike

分析 SimpleEKDemo application from Apple 时我注意到有一些内存泄漏。

其中一个漏洞是 __NSArrayM,它在 Leaked Blocks 历史记录中有 3 行,Malloc/Assign/Release。

问题 - 有人可以指出问题的根本原因吗? (我正在尝试学习如何从创建泄漏对象的位置获取 Instruments 输出,然后从那里找出根本原因,所以这真的很有用)

最佳答案

您会注意到,当您运行带有泄漏的演示时,viewDidLoad(负责的框架)中存在泄漏。如果切换到 Call Tree 详细信息并且启用了 Invert Call Tree,您将看到与调用相关的泄漏 +[NSArray new]。如果你稍微打开它,你会看到在 RootViewControllerviewDidLoad 中调用的 initWithArray。问题是,

self.eventsList = [[NSMutableArray alloc] initWithArray:0];

eventsList 是一个 retained 属性,因此创建的对象的保留计数为 2。但是它只有 released 一次dealloc 中的 release 或通过重新分配 eventsList。你必须自动释放这个对象。

self.eventsList = [[[NSMutableArray alloc] initWithArray:0] autorelease];

修复后,您应该不会收到任何错误。

关于iphone - 为什么 SimpleEKDemo 代码中存在内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6172510/

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