В чем разница между applicationDidReceiveMemoryWarning и didReceiveMemoryWarning? - PullRequest
6 голосов
/ 20 февраля 2010

В чем разница между applicationDidReceiveMemoryWarning и didReceiveMemoryWarning? Как лучше всего обрабатывать эти предупреждения?

1 Ответ

10 голосов
/ 25 февраля 2010

Вы должны использовать «Ленивую загрузку» данных на всех ваших представлениях. Например, если вы отображаете список данных в табличном представлении, вы должны освободить данные, когда ваш контроллер представления получает didReceiveMemoryWarning и установить указатель данных на ноль.

Большая часть примера кода Apple подчеркивает эту ленивую технику загрузки.

applicationDidReceiveMemoryWarning - аналогичное сообщение, отправленное на ваш AppDelegate. Вам следует опубликовать нежелательные глобальные данные, которые вы храните в AppDelegate.

Классическим примером является Safari. Откройте скажем 2-3 вкладки в Safari (на iPhone Simulator). Пусть все вкладки загружают содержимое веб-страницы. Попробуйте переключаться между разными вкладками. Вы должны заметить, что содержимое остается там и не сбрасывается. Теперь из меню закройте «Предупреждение о симуляции памяти». Теперь, когда вы переключаетесь на другую вкладку, Safari снова получает содержимое. Внутренне произошло то, что URL запоминается, но все содержимое веб-страницы было выпущено методом didReceiveMemoryWarning.

Вы должны также реализовать аналогичные механизмы в своем приложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...