Я использую UINavigationController для перемещения между представлениями. Когда я перемещаюсь взад и вперед по просмотрам, память, используемая моим приложением, продолжает расти. При размещении инструкций NSLog в методе dealloc для всех контроллеров view я заметил, что он вызывался только для некоторых контроллеров view и не для всех, которые были выписаны.
Например, это последовательность, в которой просматриваются представления MainViewController → viewcontroller1 → viewcontroller2 → viewcontroller3
Теперь в viewcontroller3, если я делаю popToViewController: mainController, dealloc вызывается только для viewcontroller3. Он не вызывается для viewcontroller1 и 2.
Может кто-нибудь скажет мне, почему это происходит.
Обнаружена проблема. Метод dealloc не вызывается, если какая-либо из ссылок, удерживаемых контроллером view, все еще находится в памяти. В моем случае это был объект MPMoviePlayerController, который не был выпущен в viewcontroller1 и viewcontroller2.