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