Правильный способ освободить выделение памяти? - PullRequest
3 голосов
/ 17 декабря 2011

Я новичок, когда дело доходит до цели C, и в настоящее время я испытываю утечку памяти со следующим фрагментом кода. Утечка памяти происходит с выделением responseObj. Всякий раз, когда я пытаюсь выпустить его, похожий на responseData, я получаю сбой.

-(void) connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSString* responseStr = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
    NSMutableArray* responseObj = [responseStr objectFromJSONString];
    [delegate loadGameDetails:[responseObj objectForKey:@"result"]];
    [responseStr release];

    [responseData release]; responseData = nil; 
}

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

[delegate loadGameDetails:[[responseObj objectForKey:@"result"] autorelease]];

Как мне правильно освободить этот блок памяти?

Ответы [ 3 ]

2 голосов
/ 17 декабря 2011

Проблема не в вашем распределении. Вы отправляете objectForKey: на NSMutableArray, который на самом деле является NSDictionary / NSMutableDictionary методом. Дважды проверьте, какой тип объекта objectFromJSONString действительно возвращает.

1 голос
/ 17 декабря 2011

Ничего в этом коде не просочилось. Возможно, у вас есть переиздание responseData, но я не могу сказать, так как его объявление и настройка не входят в сферу действия. Если это ivar, вы обычно устанавливаете его равным nil через аксессор (который освободит его там), чем напрямую, как вы сделали здесь

Если есть утечка, это в вашем методе loadGameDetails. Что заставляет вас думать, что у вас утечка памяти? Вы пробовали это через инструменты или использовали статический анализатор?

0 голосов
/ 17 декабря 2011

Похоже, вы не выделили / init responseObj.

Я также нашел этот пост, который может оказаться вам полезным:

Управление памятью NSMutableArray

Надеюсь, это поможет!

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