Я добавляю это как отдельный ответ, чем мой другой, потому что это отдельный ответ.Ответ, который я дал ранее, является практическим, который вы ДОЛЖНЫ использовать.Он сводится к тому, чтобы «иметь дело с предупреждением об уровне памяти, о котором вы уведомлены, и не беспокоиться о деталях».
Если, однако, вы действительно действительно хотите узнать об этом больше, проверьтеиз этого недокументированного API: http://www.opensource.apple.com/source/Libc/Libc-594.1.4/include/libkern/OSMemoryNotification.h
Это заголовок кода ядра, который генерирует предупреждения памяти, и он объявляет следующий typedef:
typedef enum {
OSMemoryNotificationLevelAny = -1,
OSMemoryNotificationLevelNormal = 0,
OSMemoryNotificationLevelWarning = 1,
OSMemoryNotificationLevelUrgent = 2,
OSMemoryNotificationLevelCritical = 3
} OSMemoryNotificationLevel;
У нас, очевидно, нет реализацииключевой метод (OSMemoryNotificationCurrentLevel()
), который выполняет математику, чтобы сказать, какое предупреждение вернуть, но это список возможных возвращаемых значений.
Вы можете использовать библиотеку Mach.h, чтобы проверить фактические уровни памяти наустройство (дайте мне знать, если вам нужен какой-то код, который это делает), а затем используйте OSMemoryNotificationCurrentLevel()
, чтобы получить текущий уровень предупреждения о памяти и действительно отобразить уровень уведомлений в физическое состояние машины.Такое приложение будет совершенно нежелательным в магазине приложений, и оно не поможет вам в реальной разработке, где ваша задача - реагировать на один уровень предупреждения о нехватке памяти, который вы получаете.