слишком много памяти в UINavigationController

#objective-c #memory #uinavigationcontroller

#objective-c #память #uinavigationcontroller

Вопрос:

у меня есть навигационный контроллер с несколькими ViewController и TableViewController.

Я использую все объекты autorelease, проблема в том, что когда я запускаю новое представление и использую его, объем памяти из Instrumets увеличивается на большее значение освобождаемой памяти, когда я возвращаюсь в NavigationController. Предупреждения об утечке нет, когда я вернусь к просмотру, объем памяти снова не увеличится, это как если бы все было в кэше.

Я пытался также использовать собственные объекты с alloc …. и release, но история та же. Это нормально?

Комментарии:

1. Используйте анализ heapshot в инструменте утечек, чтобы выяснить это.

Ответ №1:

UIViewControllers (или, если быть точным, связанные с ними представления / ресурсы / xibs) интересны, поскольку iOS будет сохранять ресурсы в памяти и выгружать их по мере необходимости. Вот почему часто dealloc метод будет выглядеть так, как будто он никогда не вызывался. Однако не волнуйтесь, если вы правильно управляли памятью, ваши контроллеры и ресурсы будут освобождены по мере необходимости — если вашему приложению отправлено предупреждение о нехватке памяти, все скрытые или извлеченные представления будут выгружены и освобождены.

Попробуйте протестировать свое приложение еще раз, как вы делали раньше, но на этот раз эмулируйте низкое использование памяти (это можно сделать в simulator из Hardware меню), затем посмотрите, снижается ли использование памяти из-за того, что ваши контроллеры освобождаются системой