Из Руководства по программированию контроллера View от Apple / Эффективное управление памятью;
didReceiveMemoryWarning
Используйте этот метод, чтобы освободить все некритические пользовательские структуры данных, связанные с вашим контроллером представления. Хотя вы не стали бы использовать этот метод для освобождения ссылок на объекты просмотра, вы можете использовать его для освобождения любых структур данных, связанных с представлением, которые вы еще не выпустили в своем методе viewDidUnload. (Сами объекты представления всегда должны быть освобождены в методе viewDidUnload.)
viewDidUnload
Вы можете использовать метод viewDidUnload для освобождения любых данных, относящихся к представлению, которые можно легко воссоздать, если представление снова загружается в память. Однако, если воссоздание данных может занять слишком много времени, вам не нужно выпускать соответствующие объекты данных здесь. Вместо этого вам следует рассмотреть возможность выпуска этих объектов в методе didReceiveMemoryWarning.
Для didReceiveMemoryWarning рекомендуется освободить некритические структуры данных. Итак, что критично, а что некритично?
Кроме того, в нем говорится о выпуске того, что мы еще не выпустили в viewDidUnload. Но когда появляется предупреждение о памяти, вызывается didReceiveMemoryWarning и представление может быть выгружено, тогда вызывается viewDidUnload. Итак, речь идет о перемещении этих кодов в метод предыдущего события (didReceiveMemoryWarning) или мне что-то не хватает в порядке событий?
Для viewDidUnload рекомендуется легко воссоздавать данные при перезагрузке представления. Итак, если представление используется и не может быть выгружено, почему мы будем выпускать трудоемкие данные в didReceiveMemoryWarning? После выпуска этих данных, когда пользователь пытается что-то сделать в текущем представлении, их загрузка также займет много времени.