У меня есть существующее приложение, в котором я внес некоторые недавние изменения, и я тестировал эти изменения. Приложение работает отлично на каждом iPad, на котором я тестирую его (iOS 4 и iOS 5). После загрузки нескольких (50+) изображений с тяжелыми представлениями в моем приложении я получаю предупреждение о низком уровне памяти, и мои методы viewDidUnload вызываются, и они должным образом игнорируют все их элементы управления, и мой кеш-память в памяти очищается, и приложение продолжается хорошо.
Однако на iPhone 4 и iPhone4 (iOS 5.0.1 и iOS 5.1) я столкнулся с проблемой, когда в моем приложении заканчивается память, даже не получая предупреждение о низкой памяти. После загрузки нескольких разных представлений в конечном итоге появится новое представление и будет в основном пустым, а на консоли я вижу сообщения о распределении памяти, и весь телефон становится неактивным и иногда убивает мое приложение.
Конкретный вид, который это происходит, различен каждый раз, поэтому он не связан ни с одним видом, а с накоплением памяти с течением времени. Я также подтвердил, что у меня нет утечек памяти.
Этот существующий вопрос схож:
Приложение IOS убито для работы с низкой памятью, но не получено предупреждение о сохранении памяти
и этот ответ подсказывает, что это может произойти, если я застрял в цикле, но я уверен, что мой код не застрял в любых циклах. Я просто перебираю из одного вида в другой в UINavigationController и загружает несколько изображений в каждом представлении. Кроме того, другой вопрос был особенно распространен на iPad, где я не вижу эту проблему на iPad, только iPhone.
BTW, я пробовал зарегистрироваться для уведомления о низкой памяти через NotificationCenter и иметь метод applicationDidReceiveMemoryWarning в моем делете приложения и иметь точки останова на обоих и не вызывать. Кроме того, в консоли отладчика также отображается сообщение с низкой памятью.
Любые идеи о том, что может произойти?
Добавлено 27.02.2012:
Интересно, что, когда я тестировал свое приложение на новом iPad, у него есть та самая проблема, что я вижу на iPhone 4 и 4, где уведомление о низкой памяти не получено. Поэтому мне интересно, вижу ли я ту же проблему, что и этот другой поток:
Новый iPad: предупреждения о низкой памяти не отображаются?
но разработчик в этом потоке тестирует приложение только для iPad и поэтому не тестирует и не обнаруживает эту проблему на любых iPhone.
Я провел некоторое тщательное тестирование и имел список устройств, где я получил надлежащее предупреждение о низкой памяти и устройствах, где я его никогда не получал. Пока я вижу проблему только на iOS5 или выше, однако на iPad1 с iOS 5.0 и 5.1 я не вижу проблемы, поэтому это не просто проблема для всех устройств на iOS 5.
Вот список:
Правильное предупреждение о низкой памяти
iPad1 4.2.1
iPad1 5.0
iPad1 5.1
iPad2 4.3.3
iPhone3G 4.2.1
iPod 3G 4.3.3
iPhone4 4.3.3
Предупреждение о низкой памяти
iPhone4 5.1
iPhone4s 5.0.1
iPad3 5.1