Я сталкиваюсь с ситуацией, когда didReceiveMemoryWarning вызывается, а viewDidUnload - нет. Документы для didReceiveMemoryWarning говорят:
Реализация по умолчанию этого метода проверяет, может ли контроллер представления безопасно выпустить свое представление. Это возможно, если само представление не имеет суперпредставления и может быть перезагружено либо из файла пера, либо с помощью пользовательского метода loadView. Если представление может быть освобождено, этот метод освобождает его и вызывает метод viewDidUnload.
Контроллер представления не виден в то время, но является родительским для модального объекта (который обычно находится в палитре изображений при выдаче предупреждения о памяти). Кажется, что представление должно быть в состоянии быть выпущенным, но возможно я что-то упускаю.
Причина, по которой это имеет значение, заключается в том, что я выпускал некоторые кэшированные данные в didReceiveMemoryWarning при условии, что viewDidLoad будет вызываться при перезагрузке представления. Но так как viewDidUnload не вызывается, также и viewDidLoad при повторном отображении представления ...