вызывал ReceiveMemoryWarning, но не viewDidUnload? - PullRequest
0 голосов
/ 10 сентября 2010

Я сталкиваюсь с ситуацией, когда didReceiveMemoryWarning вызывается, а viewDidUnload - нет. Документы для didReceiveMemoryWarning говорят:

Реализация по умолчанию этого метода проверяет, может ли контроллер представления безопасно выпустить свое представление. Это возможно, если само представление не имеет суперпредставления и может быть перезагружено либо из файла пера, либо с помощью пользовательского метода loadView. Если представление может быть освобождено, этот метод освобождает его и вызывает метод viewDidUnload.

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

Причина, по которой это имеет значение, заключается в том, что я выпускал некоторые кэшированные данные в didReceiveMemoryWarning при условии, что viewDidLoad будет вызываться при перезагрузке представления. Но так как viewDidUnload не вызывается, также и viewDidLoad при повторном отображении представления ...

1 Ответ

0 голосов
/ 10 сентября 2010

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

...