Iphone 目标C:单亲家庭使用的词典内存泄漏
我正在使用一个singleton类在iphone应用程序中的视图之间共享数据。我的singleton类包含我在My-init方法中分配的字典:Iphone 目标C:单亲家庭使用的词典内存泄漏,iphone,objective-c,memory-leaks,nsdictionary,singleton,Iphone,Objective C,Memory Leaks,Nsdictionary,Singleton,我正在使用一个singleton类在iphone应用程序中的视图之间共享数据。我的singleton类包含我在My-init方法中分配的字典: - (id)init { if ( self = [super init] ) { self.dataList = [[NSMutableDictionary alloc]init]; } return self; } 我用我的dealloc方法发布它: - (void)
- (id)init
{
if ( self = [super init] )
{
self.dataList = [[NSMutableDictionary alloc]init];
}
return self;
}
我用我的dealloc方法发布它:
- (void)dealloc
{
[dataList release];
[super dealloc];
}
此数据列表是从服务器下载的,我在我的应用程序中多次这样做,因此我有一个自定义setter方法来释放旧数据列表,并保留新数据列表:
-(void) setDataList:(NSMutableDictionary*)d
{
if( dataList !=nil){
[dataList release];
dataList = [d retain];
else
dataList = [d retain];
}
在使用泄漏工具时,我发现字典内存泄漏。我认为我正确地完成了字典的alloc和release。泄漏是因为没有调用singleton的dealloc方法吗
谢谢你的帮助
Srikanth添加自动释放:
self.dataList = [[[NSMutableDictionary alloc] init] autorelease];
当您将对象指定给属性时,它会保留该对象,并且无论何时调用它所保留的和init方法,都会将保留计数设置为2
当您重新分配它时,它也会释放,这样您就可以
self.dataList = newValue;
@syntehsized属性为您处理所有的retain-release内容。或
self.dataList=[NSMutableDictionary]代码>是的,这是正确的,因为没有调用init,它不会保留。