Между чем различие applicationDidReceiveMemoryWarning
и didReceiveMemoryWarning
? Что лучший способ состоит в том, чтобы обработать те предупреждения?
Вы должны использовать "отложенную загрузку" данных во всех ваших представлениях.
Например, если вы отображаете список данных в табличном представлении, вы должны освободить данные, когда ваш контроллер представления получит a didReceiveMemoryWarning
и устанавливает указатель данных равным нулю.
Большая часть примеров кода Apple подчеркивает эту технику отложенной загрузки.
applicationDidReceiveMemoryWarning
- аналогичное сообщение, отправляемое вашему AppDelegate. Вам следует освободить нежелательные глобальные данные, которые вы храните в своем AppDelegate.
Классический пример - Safari. Откройте, скажем, 2-3 вкладки в Safari (в iPhone Simulator). Разрешите всем вкладкам загружать содержимое веб-страницы. Попробуйте переключаться между разными вкладками. Вы должны заметить, что содержимое остается там и не сбрасывается. Теперь в меню закройте «Simulate Memory Warning». Теперь, когда вы переключитесь на другую вкладку, Safari снова получит содержимое. Внутренне произошло то, что URL-адрес запоминается, но все содержимое веб-страницы было выпущено в методе didReceiveMemoryWarning
.
Вы также должны реализовать аналогичные механизмы в своем приложении.