applicationDidFinishLaunching не вызывается

#xcode #macos #cocoa #interface-builder

#xcode #macos #какао #конструктор интерфейса

Вопрос:

В моем appdelegate.m applicationDidFinishLaunching не вызывается. Я читал, что это связано с тем, что делегат моего «приложения» подключен неправильно, но я не знаю, как его подключить. Что я делаю, так это щелкаю правой кнопкой мыши по приложению из файла XIB и перетаскиваю куда-нибудь выход делегата… но не знаю, где. Любая помощь приветствуется. Спасибо!

Ответ №1:

В вашем файле MainMenu.xib убедитесь, что есть экземпляр вашего класса AppDelegate. Чтобы создать его, перетащите обычный объект (синий куб) в список и задайте для его имени класса значение AppDelegate (или любое другое имя класса делегата вашего приложения).

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

Выполнено.

Комментарии:

1. Вы сэкономили мне много времени, спасибо! В дополнение к этому мне пришлось связать его с владельцем файла.

2. Концептуальный скачок заключается в понимании того, что nib / xib представляет собой набор экземпляров сублимированных объектов. В запущенном приложении обычно есть только один из основных архитектурных элементов, таких как ваш экземпляр NSApp и его делегат. Сборки контроллера / представления документа являются очевидным исключением, но даже в этом случае отдельный прототип xib «документа» содержит один объект, представляющий экземпляр документа, главное окно и т. Д. Однако вы не включаете предварительно созданный экземпляр объекта модели в xib (например, Person), поскольку это переменная (обычно нет одного человека).). Ключевые понятия. 🙂

3. Спасибо за это! Я уже потратил день, пытаясь выяснить, почему мой помощник по входу в систему внезапно перестал работать. Я случайно удалил, а затем создал новый MainMenu.xib

4. В Xcode 6 (ранее не тестировался) кажется, что нужно связать только владельца файла, а не объект приложения.

5. Владельцем файла действительно является приложение в файлах MainMenu.nib.

Ответ №2:

Вот что нужно попробовать, если вы обновились до Swift 3:

Взгляните на свой «AppDelegate.swift» и убедитесь, что соответствующая строка выглядит следующим образом:

 func applicationDidFinishLaunching(_ aNotification: Notification) {
  

в отличие от этого:

 func applicationDidFinishLaunching(_ aNotification: NSNotification) {
  

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

Комментарии:

1. Спасибо, это то, что устранило мою проблему, возникшую из приложения Swift 2.

2. Я обнаружил, что мне также пришлось выполнить продукт> Очистить