Контроллер Modal View отключен по предупреждению памяти? - PullRequest
0 голосов
/ 03 февраля 2012

У меня периодически возникает ошибка, которая возникает в моем приложении, и я наконец смог последовательно воспроизвести ее, имитируя предупреждение о памяти в определенном сценарии. Вот настройки.

 Nav controller
 (as tab inside      --> Modal Controller 1 --> Modal Controller 2
 Tab Controller)

Если я имитирую предупреждение памяти, когда на экране находится Modal Controller 2, Modal Controller 1 отключается, а нижний навигационный контроллер полностью выдвигается обратно в свой корень. Это именно то, что происходит в сообщенной ошибке.

Если пользователь затем нажимает кнопку «Готово» в MC2, он вызывает метод делегата в MC1, который завершается сбоем из-за того, что из-за предупреждения о памяти MC1 выгружается и освобождается.

В моем приложении есть другие места, где у меня есть навигационные контроллеры, представляющие цепочки контроллеров модального представления, но предупреждение о нехватке памяти вызовет эту проблему только в одной конкретной области моего приложения.

Есть ли что-нибудь, что может вызвать такое поведение? У меня нет конкретных примеров кода, потому что я не уверен, какой код вызывает проблему. Я был бы признателен за любые указатели на всех.

1 Ответ

1 голос
/ 03 февраля 2012

Когда появляется предупреждение о памяти, iOS может освободить любые невидимые представления, включая представление MC1 (но не самого MC1) в вашем случае.Необходимо реализовать следующее в MC1.

  • в viewDidUnload или перед отображением MC2, запомнить текущее состояние.
  • в viewDidLoad, восстановить старое состояние, если таковое имеется.
  • в методе делегата вызовите [self view], чтобы загрузить представление, если оно освобождено.

Или, возможно, вы захотите рассмотреть следующий хак. UIViewController предотвращает выгрузку вида

...