Когда объекты обнуляются при использовании ARC?

Я работаю над проектом iPhone, используя ARC. Приложение основано на навигации с использованием UINavigationController.

Типичный вариант использования — переход от «основного» UIViewControllerк «дополнительному» UIViewControllerнесколько раз, возможно, до 100 раз. На вторичном контроллере много статических локальных изображений в формате PNG, некоторые из них повторяются.

Профилирую приложение и вижу, что при переходе с «основного» на «дополнительный» контроллер оно выделяет около 0,8 МБ, но при нажатии на кнопку «назад» не освобождает память. Итак, когда я снова перехожу к вторичному контроллеру, выделяются другие 0,8 МБ и так далее...

При отладке я заметил, что метод viewDidUnload:вторичного UIViewControllerникогда не вызывается, но я также читал, что это тот метод, в котором я должен установить значение nil для ссылки хранятся у контроллера. Делать это в viewDidDisappear:не помогает, потому что я хочу, чтобы это происходило только при нажатии кнопки «Назад», то есть при извлечении контроллера из стека (метод viewDidDisappear:будет также вызываться при добавлении другого контроллера в стек).

Итак, вопросы: есть ли где я должен это сделать? Могу ли я заставить этот метод вызываться? Это поведение в порядке (профилирование, выделение увеличилось до 20 МБ после нескольких циклов «основной» -> «вторичный» -> «основной» -> «вторичный» -> ...) ??

Заранее всем спасибо

6
задан Phlibbo 26 May 2012 в 10:51
поделиться