我正在使用单例类在我的iphone应用中的视图之间共享数据。我的单例类包含一个我在-init方法中分配的字典:
- (id)init
{
if ( self = [super init] )
{
self.dataList = [[NSMutableDictionary alloc]init];
}
return self;
}
我在dealloc方法中发布它:
- (void)dealloc
{
[dataList release];
[super dealloc];
}
这个dataList是从服务器下载的,我在我的应用程序中多次这样做,所以我有一个自定义的setter方法来释放旧的,并保留新的:
-(void) setDataList:(NSMutableDictionary*)d
{
if( dataList !=nil){
[dataList release];
dataList = [d retain];
else
dataList = [d retain];
}
使用泄漏工具,我收到了字典的内存泄漏。我认为我正在正确地进行字典的分配和释放。因为单例的dealloc方法没有被调用,所以会发生泄漏吗?
感谢您的帮助,
SRIKANTH
答案 0 :(得分:3)
添加自动释放:
self.dataList = [[[NSMutableDictionary alloc] init] autorelease];
当你将一个对象分配给一个属性时,它会保留它,每当你调用它时,它保留的init方法,保留计数为2。
当你重新分配它时它也会释放,所以你可以
self.dataList = newValue;
@ syntehsize'd属性为您处理所有保留发布内容。