Когда установить объекты на ноль при использовании ARC?
Я нахожусь на проекте iPhone с помощью ARC
, Приложение на основе навигации, использующее UINavigationController
,
Типичный вариант использования - перейти от "основного" UIViewController
к "вторичному" UIViewController
несколько раз, может быть, до 100 раз. Вторичный контроллер имеет много статических, локальных изображений PNG, некоторые из которых повторяются.
Я профилирую приложение и вижу, как при переходе от "основного" к "вторичному" контроллеру оно выделяет около 0,8 МБ, но при нажатии кнопки назад не освобождает память. Итак, когда я снова иду на вторичный контроллер, выделяются другие 0,8 МБ и так далее...
Отладка, я заметил, что viewDidUnload:
метод вторичного UIViewController
никогда не вызывается, но я также читал, что это тот метод, в котором я должен установить ноль ссылок, хранящихся в контроллере. Делать так в viewDidDisappear:
не помогает, потому что я хочу, чтобы это происходило только при нажатии кнопки назад, то есть при извлечении контроллера из стека (viewDidDisappear:
метод также вызывается при помещении другого контроллера в стек).
Итак, вопросы: где я должен это сделать? Можно ли заставить этот метод быть вызванным? Хорошо ли это поведение (профилирование, выделения увеличились до 20 МБ после некоторых циклов "main" -> "Secondary" -> "Main" -> "Secondary" -> ...)??
Спасибо всем заранее
1 ответ
ARC просто используется для уменьшения кода и внутреннего управления памятью. Для получения более подробной информации, пожалуйста, пройдите учебник ниже, чтобы вы могли легче понять концепции.
Понимание автоматического подсчета ссылок в Objective-C
Я надеюсь, что это может помочь вам.