Относительно черной магии руководящей памяти на устройствах iPhone OS: что делает разные уровни памяти, предупреждающей средний. Уровень 1? Уровень 2? Набор переходит в 11?
Контекст: После обширного периода стресс-тестирования памяти - включая выполнение моего приложения для iPad с проигрыванием приложения для аудиоплеера iPod, я склонен проигнорировать случайные все же нечастые предупреждения памяти, которые я получаю. Мое приложение никогда не отказывает. Когда-либо. Мое приложение является свободной утечкой. И, ну, в общем, предупреждения мемов просто, кажется, не имеют значения.
Спасибо,
Doug
В основном предупреждения означают, что на устройстве заканчивается память, и что «Если бы вы могли освободить некоторую память, которую вы не используете активно, это будет набухать! ». Если у вас жесткое управление памятью и у вас нет объектов, которые можно было бы практически отбросить, просто передайте сообщение и игнорируйте его.
SpringBoard регистрирует предупреждения об уровне памяти. Как разработчику приложения вам не нужно об этом заботиться. Достаточно просто ответить на - {application} didReceiveMemoryWarning
.
Существует 4 уровня предупреждений (от 0 до 3). Они устанавливаются наблюдателем за памятью ядра и могут быть получены с помощью закрытой функции OSMemoryNotificationCurrentLevel ()
.
typedef enum {
OSMemoryNotificationLevelAny = -1,
OSMemoryNotificationLevelNormal = 0,
OSMemoryNotificationLevelWarning = 1,
OSMemoryNotificationLevelUrgent = 2,
OSMemoryNotificationLevelCritical = 3
} OSMemoryNotificationLevel;
Как срабатывают уровни, не задокументировано. SpringBoard настроен на выполнение следующих действий на каждом уровне памяти:
Удаление активного приложения (jetsam) не обрабатывается SpringBoard, а запускается
.