Почему приборы сообщают об утечке, в то время как их число ссылок стало равным нулю - PullRequest
2 голосов
/ 18 декабря 2010

зеленая рука я.Я использую инструменты, и это помогло мне до сих пор, но сейчас я в замешательстве, потому что сообщаю об утечке памяти, в то время как история утечек блоков показывает мне, что количество ссылок этой памяти, наконец, стало 0Что это значит?
Действительно неловко, что я не могу разместить изображение здесь ... поэтому я должен описать его в тексте.Надеюсь, вам будет достаточно:

Тип события ||RefCt ||Ответственная библиотека ||Ответственный абонент
Маллок ||1 ||MyWeather ||+ [ForecastData parseSingleForecastWithXMLElement:]
Авто-релиз ||||MyWeather ||+ [ForecastData parseSingleForecastWithXMLElement:]
Сохранить ||2 ||MyWeather ||+ [ForecastData parseWithData:]
Выпуск ||1 ||Фонд ||+ [NSAutoreleasePool сток:]
Сохранить ||2 ||Фонд ||+ [NSThread initWithTarget: селектор: объект:]
Release ||1 ||Фонд ||+ [NSString сравнить: параметры:]
Выпуск ||0 ||MyWeather ||+ [RootViewController dealloc]

Любая помощь будет оценена ~

Ответы [ 3 ]

4 голосов
/ 21 декабря 2010

Это было вызвано отсутствием [super dealloc] в dealloc прогнозируемых данных, так что часть памяти прогнозируемых данных никогда не освобождается, в то время как количество сохраняемых прогнозных данных стало нулевым. В любом случае, спасибо, ребята.

0 голосов
/ 18 декабря 2010

Вы пробовали это на устройстве?Иногда вы можете видеть, что обнаруживаются утечки, которые на самом деле не являются утечками.

Другая причина может заключаться в том, что у вас включен NSZombie, что означает, что объекты на самом деле не выпускаются.

0 голосов
/ 18 декабря 2010

вы не предоставляете много примеров кода, так что это может быть что угодно.RefCount для MyWeather равен нулю, но Foundation по-прежнему равен единице, так что, может быть, вы где-нибудь выделили NSSting, который никогда не был выпущен?Я бы никогда не выделил-инициализировал строку, а установил бы текст напрямую и позволил бы управлению памятью сделать все остальное.Я не знаю почему, но я думаю, что это немного глючит.Иногда я получаю странные ошибки, если я пытаюсь что-то подобное:

NSString *str = [[NSString alloc] initWithString:@"some Text"];
myLabel.text = str;
[str release];

myLabel должно сохранить это, но это не так.Я получу ошибку, если я попытаюсь release это.(и утечка, если нет)

Если я использую

NSString *str = @"some Text";
myLabel.text = str;

, он прекрасно работает, без ошибок и утечек.

...