Pickle-загрузка более 1 строки файла модели pkl

Вам нужно сделать несколько вещей здесь

  1. Удалить NSMainStoryboardFile ключ / значение из plist
  2. Создайте подкласс NSApplication и назначьте его кнопке Principal Class (NSPrincipalClass).

Имя должно быть полностью соответствующим имени вашего модуля.

  1. Вручную создать экземпляр вашего делегата в подклассе NSApplication и назначьте его свойству delegate.

Убедитесь, что вы держите ссылку на свой объект делегата. Ive просто использовал здесь let.

class GrookApplication: NSApplication {

    let strongDelegate = AppDelegate()

    override init() {
        super.init()
        self.delegate = strongDelegate
    }

    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

}

, например, простой делегат.

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    override init() {
        super.init()
        print("wassup")
        //conceptual proof of life init override
        //wait until applicationDidFinishLaunching , specially for UI
    }

    var window: NSWindow!
    func applicationDidFinishLaunching(_ aNotification: Notification) {
        print("yo! I'm alive")
        window = NSWindow(contentRect: NSRect(x: 0, y: 0, width: 200, height: 200), styleMask: .titled, backing: .buffered, defer: false)
        window.makeKeyAndOrderFront(nil)
    }

}

EDIT 2018 Verified High Sierra

НЕ пытайтесь инициализация окна или просмотра контроллера внутри init, это приводит к двойным проблемам инициализации приложений и сбоям. Приложение не закончило запуск на этом этапе. Подождите, пока applicationDidFinishLaunching не запустит какие-либо значительные операции.

1
задан ycx 29 March 2019 в 06:09
поделиться