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

时间:2011-05-30 05:17:30

标签: iphone objective-c ios memory-management eventkit

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

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

问题 - 有人可以在这里指出根本原因问题吗? (我正在尝试学习如何获取创建漏洞对象的仪器输出,然后从那里解决根本原因,所以这将非常有用)

1 个答案:

答案 0 :(得分:3)

您会注意到,当您运行带有泄漏的演示时,viewDidLoad(负责框架)中存在泄漏。如果您切换到Call Tree详细信息,并且已启用Invert Call Tree,则会看到与通话+[NSArray new]相关联的泄漏。如果您稍微打开一下,您会在initWithArray的{​​{1}}中看到RootViewController。问题是,

viewDidLoad

self.eventsList = [[NSMutableArray alloc] initWithArray:0]; eventsList ed属性,因此创建的对象的保留计数为2.但只有retain d release才会release dealloc 1}}或通过重新分配eventsList。你必须自动释放这个物体。

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

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