awakeFromNib дважды вызывали для моего WindowController, это правильно? - PullRequest
0 голосов
/ 21 сентября 2011

Мне сказали, что awakeFromNib следует вызывать только один раз, поэтому я был очень удивлен, увидев, что он вызывался дважды для моего WindowController.Я использую IB для создания моего WindowController в MainMenu.xib, но чтобы сообщить ему, какой файл xib окна загрузить, я добавил к нему метод init.

Когда я отлаживаю код, я нахожу первый вызов awakeFromNib, вызванныйэтим стеком вызовов.Таким образом, в основном [MyWindowController init] запускает первый вызов.Тогда второй вызов, я думаю, был из-за загрузки MainMenu.xib.Это правильно?

Может кто-нибудь пролить свет на это?

Кстати, я прочитал некоторые другие вопросы, похожие на мои, по переполнению стека, и некоторые ответили, что это может произойти из-за проблемы с файлом.Поэтому я особенно меняю владельца файла xib-файла окна на NSApplication.Но awakeFromNib все еще вызывался дважды для MyWindowController.

enter image description here

1 Ответ

1 голос
/ 21 сентября 2011

Из вашего вопроса я понимаю, что вы создаете экземпляр MyWindowController в IB, а затем в init MyWindowControllers вы загружаете второй кончик с initWithWindowNibName :?Если это так, вы, естественно, получите два вызова awakeFromNib.Один при загрузке NIB, указанного в вашем методе init, другой при загрузке MainMenu.xib.

...