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