iOS никогда не достигает DidApplicationFinishLaunching .. никогда не показывает представление - PullRequest
2 голосов
/ 18 июня 2011

Я запутался, у меня есть приложение для iOS, предназначенное для Iphone

В файле MainWindow.xib есть свое окно и ВИД, который настроен для загрузки из другого файла XIB

ОКНОв MainWindow.xib вообще не подключены розетки.

Все это работало раньше и внезапно прекратилось, поэтому я предполагаю, что что-то в XIB отключено (ссылки, делегаты, что-то не правильно связано).

Представление имеет свой делегат приложения, связанный с классом viewController для себя.

Когда приложение теперь запускается, оно просто показывает пустое окно WINDOW, и DidApplicationFinishLaunching в моем классе AppDelegate НИКОГДА не вызывается.

Я предполагаю, что у меня что-то отсутствует / нарушено в ассоциациях окна и делегата или представлений приложения.

Представление является экземпляром myViewController, а для AppDelegate установлено значение myAppDelegate

И все же, как бы я ни связывал вещи с выходами делегатов и т. Д., Он просто сидит с пустым окном, насмехающимся над мной.

Я знаю, что что-то напортачил, так как все это прекрасно работало, пока InterfaceBuilder не решил что-то запрограммировать.

Любая помощь очень ценится.

1 Ответ

2 голосов
/ 18 июня 2011

Представление имеет свой делегат приложения, связанный с классом viewController для себя.

Ошибка в этом предложении ничего не значит. Представление не имеет AppDelegate.

Объект, который мы обычно называем «AppDelegate», - это объект, который мы устанавливаем в качестве Делегата для одноэлементного объекта UIApplication.

Когда ваше приложение запускается, метод application:didFinishLaunchingWithOptions: вашего AppDelegate не вызывается по волшебству: он вызывается потому, что этот объект (типа YourAppName_AppDelegate) установлен как делегат вашего объекта UIApplication; это соединение выполняется в вашем файле MainWindow XIB путем подключения IBOutlet «делегат» экземпляра UIApplication к объекту YourAppName_AppDelegate.

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

Обратите внимание, что в особом случае файла MainWindow.XIB, поскольку этот XIB автоматически открывается при запуске приложения (за исключением случаев, когда вы изменяете его в файле Info.plist), владелец файла этого XIB также является одноэлементным UIApplication, так что вы можете подключить в вашей XIB либо делегат IBOutlet владельца файла, либо делегат объекта UIApplication, поскольку это один и тот же одноэлементный объект.

...