Xcode 4 - проблема viewDidLoad - PullRequest
6 голосов
/ 12 марта 2011

У кого-нибудь еще есть проблемы с Xcode 4, где viewDidLoad вызывается дважды? Я запустил один и тот же проект в Xcode 3.2 и Xcode 4, и он работает только в Xcode 4.

Ответы [ 4 ]

4 голосов
/ 03 июня 2011

После изучения этого вопроса на форумах Apple Developer кажется, что в некоторых случаях Xcode 4 создает ошибочные NIB Interface Builder. Эффект заключается в том, что rootViewController приложения загружается дважды, что действительно приводит к ошибкам. Тот же проект, загруженный в Xcode 3, не будет демонстрировать проблему.

В моем универсальном приложении это коснулось только iPad NIB. IPhone был в порядке.

Мне удалось решить эту проблему:

  • Удаление подключения rootViewController в Интерфейсном Разработчике (это приводит к загрузке приложения с window.rootViewController = nil)
  • В viewDidLoad для основного контроллера (тот, который загружался дважды), я затем вручную назначаю appDelegate.window.rootViewController = self

Пока это, похоже, дает желаемый эффект.

0 голосов
/ 21 ноября 2012

У меня была такая же проблема. И я решил это. Это происходит, когда память вашего приложения получает предупреждение о памяти.

Установите точку останова для memoryDidReceiveWarning. Он вызывается и очищает память вашего класса. Так что ваш viewDidLoad вызывается дважды, потому что у него нет памяти в то время.

0 голосов
/ 03 июня 2011

Вы установили вид контроллера просмотра?У меня была та же проблема, и я понял, что не установил свойство просмотра.

- (void)viewDidLoad {
    UIView *contentView = [[UIView alloc] initWithFrame: [[UIScreen mainScreen] applicationFrame];
    //add some stuff to contentView here
    self.view = contentView;
    [contentView release];
}
0 голосов
/ 12 марта 2011

Xcode - это просто IDE - он не должен иметь никакого отношения к тому, что происходит во время выполнения вашего приложения.Если есть разница, скорее всего, вы создаете для разных версий iOS.

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