Я просмотрел множество сообщений, моих книг и Apple Developer и получил большую часть понимания, которое мне нужно использовать. Я был бы очень благодарен, если какой-нибудь человек может подтвердить, что у меня все в порядке (или исправить), а также ответить на два вопроса.
Большое спасибо,
Крис.
Порядок сообщений Как правило, сообщения отображаются в следующем порядке:
-
didReceiveMemoryWarning
-
viewDidUnload (что может быть вызвано 1) - очевидно, применимо только к классам View Controller.
-
dealloc
didReceiveMemoryWarning
Вызывается, когда система неактивна в памяти.
По умолчанию контроллеры просмотра регистрируются для уведомлений о предупреждении памяти и в методе шаблона, вызов [super didReceiveMemoryWarning] освобождает представление, если у него нет супервизора, что является способом проверки видимости вида или нет. Он освобождает представление, устанавливая его свойство равным нулю.
Действие. Отпустите все, что вам не нужно, скорее всего, будет уничтожено то, что вы могли установить в viewDidLoad. Не выпускайте элементы пользовательского интерфейса, поскольку они должны быть выпущены функцией viewDidUnload.
Question1 - Кажется, что это будет вызвано, даже если вид виден, поэтому его трудно увидеть, что вы можете спокойно освободить. Было бы очень полезно понять это и некоторые примеры того, что может быть выпущено.
viewDidUnload
Вызывается всякий раз, когда для невидимого свойства View Controller View установлено значение nil, либо вручную, либо чаще всего через didReceiveMemoryWarning.
Метод viewDidUnload существует, чтобы вы могли: - очистить все остальное, что вы хотели бы, чтобы сохранить дополнительную память или - если вы сохранили некоторые IBOutlets, чтобы освободить память, которая иначе не была бы выпущена при разгрузке представления.
Действие - как правило, любые IBOutlets, которые вы выпускаете в dealloc, также должны быть освобождены (и ссылки установлены на нуль) в этом методе. Обратите внимание, что если свойства будут сохранены, то их установка будет равна нулю.
dealloc
Вызывается, когда объект контроллера просмотра де-распределен, что будет, когда счетчик удержания падает до нуля.
Действие - освободить все объекты, сохраненные классом, включая, но не ограничиваясь, все свойства с сохранением или копированием.
Контроллеры просмотров и памяти
Вопрос 2 - Выводит ли вид снимок из памяти?