Утечка NSXMLParser

там способ вынудить компилятор встроить этот вызов, или я сделаю, я просто надеюсь, что компилятор сделает эту оптимизацию?

, Если более дешево встроить функцию, это будет. Не волнуйтесь об этом, если Ваш профилировщик не говорит, что это на самом деле - проблема.

Для получения дополнительной информации

Улучшения JIT в.NET 3,5 SP1

9
задан Lee Armstrong 22 October 2009 в 04:18
поделиться

3 ответа

Apple вернулся ко мне, и это ошибка # 6469143

Похоже, что они планируют исправить 4,0

10
ответ дан 4 December 2019 в 15:22
поделиться

Наиболее вероятная причина в том, что один из ваших методов делегата сохраняет синтаксический анализатор. Делаете ли вы что-нибудь со своим параметром синтаксического анализатора в методах делегата?

Получаете ли вы утечку каждый раз при обновлении?

Если это единственное место, где используется rssParser, почему вы делаете его ivar? Если вам действительно нужен ivar, я не могу не подчеркнуть, насколько важно всегда использовать для них аксессоры и никогда не обращаться к ним напрямую. Единственный лучший способ избежать утечки памяти - использовать аксессоры для ваших ivars.

Кроме того, никогда не выпускайте что-либо, не установив сразу что-то другое (обычно nil). Вышеупомянутый выпуск rssParser - это ожидаемый сбой, потому что теперь у вас есть указатель на потенциально нераспределенную память.

3
ответ дан 4 December 2019 в 15:22
поделиться

Кажется, это хорошо известная проблема. См. Здесь NSURLConnection leaking . Однако, если вы установите следующее перед инициализацией парсера, утечка прекратится:

[[NSURLCache sharedURLCache] setMemoryCapacity:0];
[[NSURLCache sharedURLCache] setDiskCapacity:0];
NSXMLParser *parser = [[NSXMLParser alloc]initWithContentsOfURL:URL];
0
ответ дан 4 December 2019 в 15:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: