2010-10-05 1 views
2

My root view controller - это карта с несколькими аннотациями. Когда выбрана аннотация и нажата кнопка аксессуара, я показываю вид модальности, который выглядит следующим образом: http://i.stack.imgur.com/hACyH.pngПредупреждение о наличии памяти в модальном представлении - объекты контроллера родительского контроля освобождаются. Как предотвратить?

В этом модальном виде вы можете посмотреть улицу на координаты аннотаций (я делаю это с использованием UIWebview). Вы также можете отправить фотографию или выполнить еще несколько задач, которые кажутся относительно высокими в потреблении памяти. Каждый раз, когда я получаю сообщение «Память с предупреждением» на консоли, пока отображается модальный вид, объекты-родители (IE-объект MapKit), похоже, освобождаются, потому что, как только я отклоняю модальное представление, карта теперь центрируется по центру земля (где-то на юге, Атлантический океан около Африки), а табличный вид пуст.

Я хочу сохранить эти объекты, даже если есть предупреждение о памяти. Похоже, что это вызывает то, что viewDidUnload вызывается в контроллере корневого представления, и в этом методе я устанавливаю все мои переменные в nil. Каков правильный способ справиться с ситуацией с памятью?

Спасибо!

ответ

3

Если вы действительно получили didReceiveMemoryWarning, реализация по умолчанию выгрузит его представление, если это нормально, и затем вызвать viewDidUnload. Я не знаю, как вы настроили свой контроллер, но вам может потребоваться сохранить текущую координату, а затем, когда будет вызван viewDidLoad/Appear, вы можете убедиться, что карта установлена ​​в нужное вам местоположение. Вот яблочные документы на контроллере вида life cycle

+0

Я больше не использую метод didUnload, и он работает нормально. Единственным недостатком является то, что я получаю предупреждения о прерывании памяти с помощью UIWebview, но приложение, похоже, работает нормально. Теперь я собираюсь узнать, как избавиться от постоянных предупреждений памяти с помощью UIWebview. –

Смежные вопросы