Я работаю над проектом iPhone, используя ARC
. Приложение основано на навигации с использованием UINavigationController
.
Типичный вариант использования — переход от «основного» UIViewController
к «дополнительному» UIViewController
несколько раз, возможно, до 100 раз. На вторичном контроллере много статических локальных изображений в формате PNG, некоторые из них повторяются.
Профилирую приложение и вижу, что при переходе с «основного» на «дополнительный» контроллер оно выделяет около 0,8 МБ, но при нажатии на кнопку «назад» не освобождает память. Итак, когда я снова перехожу к вторичному контроллеру, выделяются другие 0,8 МБ и так далее...
При отладке я заметил, что метод viewDidUnload:
вторичного UIViewController
никогда не вызывается, но я также читал, что это тот метод, в котором я должен установить значение nil для ссылки хранятся у контроллера. Делать это в viewDidDisappear:
не помогает, потому что я хочу, чтобы это происходило только при нажатии кнопки «Назад», то есть при извлечении контроллера из стека (метод viewDidDisappear:
будет также вызываться при добавлении другого контроллера в стек).
Итак, вопросы: есть ли где я должен это сделать? Могу ли я заставить этот метод вызываться? Это поведение в порядке (профилирование, выделение увеличилось до 20 МБ после нескольких циклов «основной» -> «вторичный» -> «основной» -> «вторичный» -> ...) ??
Заранее всем спасибо