утечка памяти iPhone - PullRequest
       13

утечка памяти iPhone

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

Я получаю Потенциальная утечка объекта, выделенного в строке 55 и сохраненного в 'returnURL' Ошибка утечки памяти.

Мой код

NSString *returnURL = [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding];
return returnURL;
[returnURL release];

Пожалуйста, помогите

Ответы [ 2 ]

7 голосов
/ 07 сентября 2011

Любые операторы после return не выполняются.Следовательно, returnURL никогда не выпускается.И вы не хотите выпускать его до того, как вернетесь, потому что хотите дать звонящему возможность сохранить объект.Фактически это классический пример авто-релиза:

return [returnURL autorelease];
3 голосов
/ 07 сентября 2011

Вы должны "автоматически выпустить" эту строку NSString перед возвратом:

NSString *returnURL = [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding];
return [returnURL autorelease];

Или часто используемый шаблон - это просто авто-релиз на сайте alloc:

NSString *returnURL = [[[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding] autorelease];

Это в основном означает, что вы говорите, что не хотите хранить ссылку, но вы хотите, чтобы она оставалась "живой" до конца цикла событий, чтобы вы могли передать ее вызывающей стороне вашего метода, затем можете использовать его, не беспокоясь о владении.

...