Цель C: утечка памяти из словаря, используемая в синглтоне - PullRequest
1 голос
/ 10 августа 2010

Я использую одноэлементный класс для обмена данными между представлениями в моем приложении для iphone.Мой одноэлементный класс содержит словарь, который я выделяю в своем методе -init:

- (id)init
{        
   if ( self = [super init] )    
    {
            self.dataList = [[NSMutableDictionary alloc]init];

    }

    return self;
}

Я освобождаю его в своем методе dealloc:

- (void)dealloc
{   
    [dataList release];

    [super dealloc];
}

Этот список данных загружается с сервера иЯ делаю это несколько раз в своем приложении, поэтому у меня есть собственный метод установки, чтобы освободить старый и сохранить новый:

-(void) setDataList:(NSMutableDictionary*)d    
{
    if( dataList !=nil){

    [dataList release];
    dataList = [d retain];

else 
   dataList = [d retain];
}

ON с помощью инструмента утечки, я получаю утечку памятисловарь.Я думаю, что я правильно выполняю alloc и release из словаря .. происходит ли утечка, потому что не вызывается метод dealloc синглтона?

Спасибо за помощь,

Srikanth

1 Ответ

3 голосов
/ 10 августа 2010

Добавление авто-релиза:

self.dataList = [[[NSMutableDictionary alloc] init] autorelease];

Когда вы присваиваете объект свойству, оно сохраняет его, и при каждом вызове и методе init оно сохраняет, увеличивая счетчик сохранения до 2.

Он также освобождается, когда вы переназначаете его, поэтому вы можете просто

self.dataList = newValue;

@ syntehsize'd свойства позаботиться обо всем, что вам нужно сохранить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...