предупреждение о памяти вызывает пустую панель навигации - PullRequest
0 голосов
/ 12 мая 2010

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

Я знаю, что viewDidUnload был вызван на контроллере представления верхнего уровня, и когда я возвращаюсь к нему, VC снова перезагружается с viewDidLoad, но панель навигации там не загружается, это происходит из mainwindow.xib. Есть идеи, что я делаю не так? (ОС 3.2, iPad)

РЕДАКТИРОВАТЬ Вот выдержка из журнала консоли, показывающая, что происходит во время предупреждения о памяти:

09:55:25.864 -[PhotoBox setPhotoImage:] size {1536, 2048} 
09:55:26.169 -[PhotoBox setPhotoImage:] resized to {768, 1024} 
09:55:26.180 Received memory warning. Level=1 
09:55:26.236 ClockMakerVC: viewDidUnload 
09:55:26.240 -[ClockMakerVC didReceiveMemoryWarning] 
09:55:26.271 saving 1 state objs to /var/mobile/Applications/82F2C13B-8663-4241-A603-B2BAD29691C1/Documents/ViewItem_State_Data 
09:55:26.298 -[ItemSettingsVC didReceiveMemoryWarning]

В этот момент я нажал стрелку назад на панели навигации, чтобы вернуться к родительскому контроллеру представления, что вызывает viewDidLoad на нем (так как он был ранее выгружен):

09:55:44.477 read 1 state objs from /var/mobile/Applications/82F2C13B-8663-4241-A603-B2BAD29691C1/Documents/ViewItem_State_Data 
09:55:44.479 loadSavedItems: 295376119.689 opts=0 np=2 P=(284,402,200,200) L=(412,274,200,200) 1 PhotoBox 
09:55:44.484 ClockMakerVC: viewDidLoad: 1 saved items loaded

1 Ответ

1 голос
/ 13 мая 2010

В соответствии с документацией viewDidLoad «... используется для выполнения дополнительных шагов инициализации для представлений, которые загружаются из nib-файлов».

Я всегда думал, что viewDidLoad вызывался только один раз, и только недавно понял, как он вызывается снова после предупреждения памяти (после того, как представление выгружено, а затем перезагружено).

Части кода инициализации моего основного контроллера в viewDidLoad не работали правильно, когда вызывались во второй раз. Я исправил некоторые его части и переместил их в awakeFromNib, и это решило проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...