didReceiveMemoryWarning, viewDidUnload и dealloc

Я просмотрел множество сообщений, свои книги и Apple Developer и получил большую часть понимания, которое мне нужно при их использовании. Я был бы очень признателен, если бы какой-нибудь добрый человек мог подтвердить, что я все правильно понял (или поправить меня), а также ответить на два вопроса.

Большое спасибо,

Крис. Обычно сообщения появляются в следующем порядке:

  • didReceiveMemoryWarning

  • viewDidUnload (что может быть вызвано 1) - очевидно, применяется только к классам контроллера представления.

  • dealloc

didReceiveMemoryWarning

Вызывается, когда системе не хватает памяти.

По умолчанию контроллеры представлений зарегистрированы для уведомлений о предупреждениях памяти, и в рамках метода шаблона вызов [super didReceiveMemoryWarning] освобождает представление, если оно не имеет супервизора, что является способом проверки видимости представления. или не. Он освобождает представление, устанавливая для его свойства значение nil.

Действие - Освободите все, что вам не нужно, вероятно, это приведет к отмене того, что вы могли настроить в viewDidLoad. Не выпускайте элементы пользовательского интерфейса, так как они должны быть освобождены с помощью viewDidUnload.

Question1 - Похоже, что это будет вызываться, даже если View является видимым, поэтому трудно увидеть, что вы можете безопасно выпустить. Было бы действительно полезно понять это и некоторые примеры того, что может быть выпущено.

viewDidUnload

Вызывается всякий раз, когда для невидимого свойства View контроллера представления установлено значение nil, вручную или чаще всего через didReceiveMemoryWarning.

viewDidUnload существует для того, чтобы вы могли: - очистите все, что хотите, чтобы сэкономить дополнительную память или - если вы сохранили некоторые IBOutlets, чтобы помочь освободить память, которая в противном случае не была бы освобождена выгружаемым представлением.

Действие - обычно любые IBOutlets, которые вы выпускаете в dealloc, также должны быть освобождены (и ссылки установлены на nil ) в этом методе. Обратите внимание, что если для свойств задано сохранение, то установка для них значения nil также освободит их.

dealloc

Вызывается, когда объект контроллера представления отменяется, что произойдет, когда счетчик сохранения упадет до нуля.

Действие - освободить все объекты, которые были сохранены классом, включая, помимо прочего, все свойства с сохранением или копией.

Всплывающие контроллеры представления и память

Вопрос 2 - Удаляет ли выталкивание представления его из память?

18
задан Chris 21 February 2011 в 18:52
поделиться