NSDictionary Утечки памяти - PullRequest
       11

NSDictionary Утечки памяти

0 голосов
/ 01 сентября 2011

Я реализую метод для возврата словаря в моем приложении.Но я обнаружил утечку памяти при использовании инструмента, я попытался выяснить это, но я все еще не могу найти это.Кто-нибудь может мне помочь?

Заранее спасибо, вот код для этих методов:

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

Я думаю, что проблема в том, чтобы выделить память для dict и не освободить ее.Но в методе, кажется, я не могу выпустить дикт.Так есть ли способ исправить утечку?

Ответы [ 3 ]

3 голосов
/ 01 сентября 2011

Все варианты хороши.Вот третий вариант (выберите мудро):

Заменить

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

на

NSMutableDictionary *dict = [NSMutableDictionary dictionary];
1 голос
/ 01 сентября 2011

Я думаю, вам просто нужно изменить последнюю строку initDict на эту:

return [dict autorelease];
0 голосов
/ 01 сентября 2011

Когда вы создаете какой-либо объект в своей функции и хотите вернуть его, вы всегда должны создавать его так, чтобы эти объекты автоматически высвобождались.Поэтому вы должны изменить свой код, как показано ниже.

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

Поэтому, когда вы создаете какой-либо объект, просто вызывайте метод autorelease для этого.

...