NSDictionary内存泄漏

时间:2011-09-01 06:03:31

标签: iphone memory-leaks nsdictionary

我实现了一个在我的应用中返回字典的方法。但我发现使用仪器发生内存泄漏,我试图弄明白,但我仍然无法找到它。任何人都可以帮助我吗?

在此先感谢,以下是该方法的代码:

-(NSMutableDictionary *)initDict
{
    NSMutableDictionary *dict = [[NSMutableDictionary alloc]init];
    [dict setObject:self.name forKey:@"Name"];
    //Some similar set object for key here...
    return dict;
}

我认为问题在于为dict分配内存而不是释放它。但在方法中,似乎我不能释放字典。那么有什么方法可以解决泄漏问题吗?

3 个答案:

答案 0 :(得分:3)

所有变种都很好。这是第三种变体(明智地选择):

替换

NSMutableDictionary *dict = [[NSMutableDictionary alloc]init];

NSMutableDictionary *dict = [NSMutableDictionary dictionary];

答案 1 :(得分:1)

我认为您只需要将initDict的最后一行更改为:

return [dict autorelease];

答案 2 :(得分:0)

当您在函数中创建任何对象并且想要返回它们时,您应该始终以这些对象自动释放的方式创建它。所以你应该改变你的代码,如下所示。

NSMutableDictionary *dict = [[[NSMutableDictionary alloc]init]autorelease];

所以每当你创建任何对象时,只需要调用autorelease方法。