У меня возникла странная (не?) Проблема с UIViewController. Похоже, что контроллер не выпускает свои подпредставления, когда он освобожден. Я поместил сообщения NSLog во все методы dealloc подпредставления, а также в контроллер представления. Контроллер представления dealloc вызывается, а подпредставление - нет. Однако, если я затем помещаю другой экземпляр этого контроллера представления в стек навигации, оказывается, что все подпредставления предыдущего экземпляра затем освобождаются (я получаю кучу сообщений NSLog в консоли, сообщая мне об этом). Я проверил, и у меня нет отдельной ссылки на пользовательский контроллер представления в представительном контроллере представления (тот, который выполняет pushing).
Одна маленькая (может быть) деталь: пользовательский контроллер представления получает блок, который хранит, а затем выполняет перед извещением. Тем не менее, я отправил ноль к нему, и я получаю такое же поведение. Кроме того, представительный контроллер представления выполняет освобождение при извлечении из стека, поэтому цикл сохранения не сохраняется.
Кроме того, я попытался явно освободить каждое представление в методе dealloc пользовательского контроллера представления. Такое же поведение.
Возможно ли, чтобы навигационный контроллер удерживал его? Похоже, он этого не делает ни с одним из моих других контроллеров представления.
Моя проблема в том, что это действительно утечка памяти (из всех этих подпредставлений); хотя утечка не складывается, это все еще утечка.