UIApplicationDelegate против NSApplicationDelegate, MainMenu.xib

Я переношу приложение iOS на OS X. Я рассматривал использование примера кода Apple «AnimatedTableView» в качестве отправной точки, но был удивлен, обнаружив, что в нем нет NSApplicationDelegate. В iOS я обычно создаю объекты программно, в applicationDidFinishLaunching, и пытаюсь понять, как это сделать в OS X, если только не должен.

MainMenu.xib для AnimatedTableView содержит объект «ContentController», который ссылается на один из своих классов контроллеров. Похоже, что действие начинается с метода "wakeFromNib" этого класса. Верно ли, что любые объекты, которые вы добавляете в MainMenu.xib, автоматически создаются при запуске приложения? Итак, я мог бы просто поместить класс главного контроллера в MainMenu.xib и начать программно создавать другие объекты оттуда? Или, чтобы придерживаться моего шаблона iOS, я мог бы заменить объект контроллера в MainMenu.xib объектом NSApplicationDelegate и программно создать объект главного контроллера?

Это правильно? Я стараюсь избегать IB, насколько это возможно, и, очевидно, упускаю некоторые основные понятия.


person user1055568    schedule 22.05.2015    source источник


Ответы (1)


Верно ли, что любые объекты, которые вы добавляете в MainMenu.xib, автоматически создаются при запуске приложения?

Правильнее было бы сказать, что приложение Cocoa, настроенное на использование файлов .xib вместо раскадровок, автоматически загрузит файл .xib, указанный в качестве основного файла nib в файле Info.plist приложения. Но да, приложение на основе .xib обычно настраивается на загрузку MainMenu.xib при запуске.

Итак, я мог бы просто поместить класс главного контроллера в MainMenu.xib и начать программно создавать другие объекты оттуда?

Конечно, это один из подходов, который работает.

Или, чтобы придерживаться моего шаблона iOS, я мог бы заменить объект контроллера в MainMenu.xib объектом NSApplicationDelegate и программно создать объект главного контроллера?

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

person Caleb    schedule 22.05.2015
comment
Вот что меня бросило, в этом конкретном примере кода от Apple нет делегата приложения. Теперь я вижу несвязанную ссылку делегата в NSApplication FileOwner, которую я мог бы прикрепить к объекту в основном файле .xib. Я всегда начинал с некоторого примера кода, где он уже был подключен, и никогда не знал, откуда он взялся. Я думаю, вам не нужен делегат приложения на OSX. - person user1055568; 23.05.2015