Действительно ли MainWindow.xib действительно необходим в iOS-приложении? - PullRequest
9 голосов
/ 24 октября 2011

Прежде чем приступить к разработке любого типа iOS 5.0 с использованием Xcode 4.2, Xcode предоставил в шаблонах файл "MainWindow.xib".После загрузки и игры с Xcode 4.2 с iOS 5.0 я заметил, что ни один из предоставленных шаблонов не включает файлы "MainWindow.xib".Нам это нужно больше?Я заметил, что в методе «application didFinishLaunchingWithOptions» в App_Delegate теперь шаблоны включают в себя код, который создает некоторое «UIWindow», и если у вас есть какие-либо контроллеры навигации, он обновляет окно соответствующим образом.у меня вопрос, нужен ли мне «MainWindow.xib» больше, и если да, то почему шаблоны Apple исключают их?

Ответы [ 3 ]

15 голосов
/ 24 октября 2011

Всегда можно было не использовать MainWindow.xib. UIWindow может быть загружено программно, выполнив следующие действия:

1) Убедитесь, что вызов UIApplicationMain в main.m выглядит следующим образом:

UIApplicationMain(argc, argv, nil, @"MyAppDelegateClassName");

вместо этого:

UIApplicationMain(argc, argv, nil, nil);

2) Убедиться, что Info.plist не имеет значения «MainWindow.xib» в качестве основного файла пера.

3) Программная загрузка UIWindow в делегат приложения.

Итак, нет, вам не нужно использовать MainWindow.xib и, фактически, вы никогда не используете. Вы всегда можете делать что-то программно.

Хороший вопрос, почему Apple сделала это изменение в настройках Xcode по умолчанию, и я не знаю ответа. Но это может быть связано с производительностью, переходом на ARC или с небольшими размерами файлов приложений, или чем-то еще.

4 голосов
/ 24 октября 2011

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

Прочтите ответ Мэтью Джиллингема о том, как вручную изменить старый проект для работы без MainWindow.xib.

2 голосов
/ 03 ноября 2011

Меня всегда смущает использование MainWindow.xib: даже при этом мне все еще нужно установить rootViewController или добавить его в окно. Разве эта информация не содержится в MainWindow.xib? Почему мне все еще нужно рассказать об этом окну?

Так что удаление MainWindow.xib, кажется, имеет смысл.

...