我实现了一个在我的应用中返回字典的方法。但我发现使用仪器发生内存泄漏,我试图弄明白,但我仍然无法找到它。任何人都可以帮助我吗?
在此先感谢,以下是该方法的代码:
-(NSMutableDictionary *)initDict
{
NSMutableDictionary *dict = [[NSMutableDictionary alloc]init];
[dict setObject:self.name forKey:@"Name"];
//Some similar set object for key here...
return dict;
}
我认为问题在于为dict分配内存而不是释放它。但在方法中,似乎我不能释放字典。那么有什么方法可以解决泄漏问题吗?
答案 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方法。