Что делать, когда мое приложение получает предупреждение о памяти? - PullRequest
7 голосов
/ 26 октября 2010

Что мне делать, когда мое приложение получает предупреждение о памяти?

Ответы [ 4 ]

8 голосов
/ 26 октября 2010

Все зависит от вашего приложения, обычно вам не нужно делать ничего особенного, кроме как следуя рекомендациям Apple.

ViewControllers, которые не видны в данный момент, получат сообщение didReceiveMemoryWarning.По умолчанию (вызывая [super didReceiveMemoryWarning]) представление контроллера выгружается (освобождается, освобождается).Поскольку представление выгружается, контроллер представления получает viewDidUnload, где вы должны освободить все свои IBOutlets (или иным образом сохраненные элементы пользовательского интерфейса).Только тогда представление может быть полностью освобождено и освобождена память.

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

1 голос
/ 26 октября 2010

Это действительно зависит от вашего приложения.

Если ваше приложение загружает и кэширует большое количество содержимого, например, из Интернета, вы должны как можно больше очистить при получении предупреждения.

Если ваше приложение представляет собой игру OpenGL, у вас может быть менеджер текстур / звука / данных, который ссылается на некоторые неиспользуемые данные, которые вы затем хотите освободить. Cocos2D управляет такими вещами.

Если ваше приложение не потребляет много памяти, у вас где-то есть утечка памяти, и вам следует 1) прочитать Руководство по программированию управления памятью от Apple 2) использовать Инструменты / Утечки.

0 голосов
/ 26 октября 2010

В didReceiveMemoryWarning вы должны освободить все кэшированные или ненужные элементы, чтобы полностью не исчерпать память.

0 голосов
/ 26 октября 2010

Если вы регистрируетесь или записываете в любой другой файл, возможно, существует проблема с дисковым пространством.

Также следует проверить на утечки памяти.

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