在分析SimpleEKDemo application from Apple时,我注意到有一些内存泄漏。
其中一个泄漏是__NSArrayM,它在泄漏块历史记录中有3行,一个Malloc / Assign / Release。
问题 - 有人可以在这里指出根本原因问题吗? (我正在尝试学习如何获取创建漏洞对象的仪器输出,然后从那里解决根本原因,所以这将非常有用)
答案 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];
修复后,您不应该收到任何错误。