Почему не iOS 5.0, как приложения с открытым окном? Почему он запрашивает использование контроллеров представлений?

У меня есть приложение iOS, которое я создал с помощью шаблона Xcode 4.0 «Окно на основе приложения». Тогда он работал отлично, и он использовал iOS 4.3 SDK. Это приложение, которое просто помещает кнопки, метки и т. Д. Непосредственно в окно. Нет диспетчеров просмотра – ничего.

Но теперь, когда я обновился до Xcode 4.2 (и его iOS 5.0 SDK), и я запустил приложение, это сообщение регистрируется на консоли, когда приложение запускается в симуляторе:

«Ожидается, что в конце запуска приложений ожидается контроллер корневого представления»,

Конечно, приложение продолжает работать, но этот довольно докучливый журнал печатается при каждом запуске.

Почему это происходит? Почему iOS 5.0 предпочитает / запрашивает контроллеры представлений?

Я не знаю конкретно, почему сообщение заносится в журнал, но интеграция между UIWindow и UIViewController возрастает в течение последних нескольких итераций iOS. iOS 4 добавила свойство rootViewController в UIWindow. Два класса работают вместе, чтобы управлять поворотом просмотра. Учитывая новые возможности, которые IOS 5 представила UIViewController (в частности, возможность создавать собственные контроллеры представления контейнеров), ясно, что отношения между этими двумя классами будут продолжать развиваться. Как вы сказали, ваше приложение продолжает функционировать в iOS 5, поэтому наличие контроллера корневого представления еще не является сложным и быстрым требованием. Возможно, есть функции, запланированные для будущих версий iOS, которые будут зависеть от наличия контроллера вида.

У меня нет ничего против них, и я буду использовать их, если iOS хочет, чтобы я это сделал. Мне было просто любопытно, как это произошло.

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

Вы только что подключили свой «вид» к «Владелец файла» ….. просто удалите это соединение и запустите приложение. Посмотрите на свое мнение и посмотрите область инспектора соединений и удалите это соединение, о котором я сказал. Я точно не знаю, что Причина … но у меня была эта проблема, и я очистился. Возможно, вы использовали в нем какое-то табличное представление или некоторые другие представления. Итак, приложение. нужен диспетчер представлений для запуска. Если вы удалите это соединение, тогда он будет запускать то, что вы написали только в коде …

Позвольте мне рассказать вам причину.

В предыдущем издании Window-based Application используется для создания приложений с несколькими просмотрами. Но в Xcode 4.2 оконное приложение больше не существует. Пустое приложение предназначено для создания программы с несколькими видами.

Разница между Window-based Application и Empty Application заключается в том, что у первого есть главное окно MainWindow.xib.

Когда программа запускается, iPhone сначала создает основное окно. Содержимое в MainWindow будет загружено и построено. Но если вам нужно больше функций, например мульти-просмотр, вам все равно придется новый контроллер корневого представления. Контроллер корневого представления может помочь управлять представлениями в вашей программе. В новой редакции Xcode 4.2 ожидается контроллер корневого представления.

В новой редакции в Empty Application отсутствует файл MainWindow.xib. Вместо этого AppDelegate создает окно. И он хочет контроллер корневого представления. Таким образом, лучший способ – создать подкласс UIViewController с XIB для интерфейса для MainWindow. Но в старом издании XIB не нужен.

Так получилось? Без контроллера корневого представления вы не получите ошибку, но вы вряд ли сможете что-то сделать без нее. Вот почему предупреждение всегда появляется.

  • Предотвратить выполнение диспетчеризации dispatch_after ()
  • Вращение UIRotationGestureRecognizer иногда превосходит очень большое значение
  • Обнаружение, когда пользовательский UIButton был нажат
  • ios перемещает событие касания между двумя uiscrollview
  • Копия NSNumber не выделяет новую память
  • разматывать segue не работает
  • открытый URL внутри представленного MFMessageComposeViewController
  • Apple ID не найден - In-App Purchase iOS 8
  • Обнаружение начального запуска приложения с помощью NSUserDefaults
  • Сведения об использовании быстрого перечисления на копии NSMutableArray для удаления объектов
  • Жесткая утечка в методах сеттера / геттера
  • Давайте будем гением компьютера.