Утечка памяти в инструментах - PullRequest
2 голосов
/ 29 марта 2011
NSString *toDateTimeString = [dateFormatter stringFromDate:date];

100% Memory Leak в строке выше в приборе.

Есть ли какое-то решение для этого?

Ответы [ 3 ]

3 голосов
/ 29 марта 2011

Вы сохраняете toDateTimeString в какой-то момент?Инструменты сообщают вам, где была обнаружена утечка, но это не обязательно говорит вам об истинной причине утечки.Насколько мы можем судить по опубликованному вами коду, вы не несете ответственности за выпуск toDateTimeString.См. правила управления памятью .Однако, если последующая строка будет иметь вид:

[toDateTimeString retain];

без соответствующего выпуска, это будет причиной утечки.Если это так, то два других ответа верны, и вы должны сбросить (или выполнить авто-релиз) toDateTimeString до конца метода.Или, лучше, просто удалите удержание.Строка, возвращаемая вами из -stringFromDate: будет действительна до конца вашего метода, поэтому нет необходимости сохранять ее снова.

1 голос
/ 29 марта 2011

Вот еще одна возможность: рассматриваемый код выполняется в среде, где он никогда не очищает пул авто-выпуска.Возможно, вы выполняете этот код в фоновом потоке, который не объявляет пул автоматического выпуска при входе?

0 голосов
/ 29 марта 2011

Вы можете освободить toDateTimeString, но было бы лучше инициализировать его следующим образом:

NSString *toDateTimeString = [NSString stringWithString:[dateFormatter stringFromDate:date]];

Как сказано в документации, он Возвращает строку, созданную путем копирования символов из другой данной строки.

...