Я разрабатываю приложение для iPad, которое очень графически интенсивно. Я смог выжать довольно много производительности уже на iPad 2, но графика @2x для нового iPad упаковывает совершенно удар в отдел памяти. Используя Монитор активности в Инструментах, я могу видеть размер моего приложения, входящего в диапазон 300 МБ-400 МБ, но я не получаю никаких уведомлений о низкой памяти. Я использую UINavigationController
для управления моими представлениями, поэтому попадание в стек имеет кумулятивный эффект на память, который заканчивается его окончательным завершением. Я не испытываю эту проблему на iPad 2, где я получаю уведомления о низкой памяти, как ожидалось. Мое приложение было закодировано для очистки как можно больше и очень хорошо работает на этом устройстве.
Я прочитал ряд подобных вопросов:
Приложение IOS было убито за низкую память, но не получено предупреждение о сохранении памяти
Приложение iPhone использует память 150 МБ и все еще не содержит предупреждения о низкой памяти!
Ни одно из предложений, похоже, не помогает.
Я вставил код, чтобы отправить уведомление с низкой памятью:
[[UIApplication sharedApplication] _performMemoryWarning];
Это приводит к тому, что неактивные представления выгружаются так, как ожидалось, и возвращают потребление памяти в нормальное состояние. Это использует частный API и взломан, поэтому по практическим соображениям это не решение. Как заставить устройство правильно реагировать на условия низкой памяти и сообщить моему приложению, что ему нужно очистить