NSApplicationDelegate 的 applicationDidFinishLaunching 未被调用

NSApplicationDelegate's applicationDidFinishLaunching is not being called

我一直在尝试玩 Swift 3,但我无法开始。以下代码正在编译,但它不记录任何内容。看起来 applicationDidFinishLaunching 没有被调用。我是否遗漏了一些重要的部分?

Sources/main.swift:

import AppKit

class AppDelegate: NSObject, NSApplicationDelegate {
    func applicationDidFinishLaunching(aNotification: NSNotification) {
        NSLog("application start")
    }
}

NSApplication.shared()
NSApp.setActivationPolicy(.regular)
let controller = AppDelegate()
NSApp.delegate = controller
NSApp.run()

p.s。关于 applicationDidFinishLaunching 被调用但不打印任何内容也有类似的问题。我相信情况并非如此,因为 window.orderFrontRegardless() 而不是日志记录对我也没有影响。

System Version: OS X 10.11.6

> swift --version
Apple Swift version 3.0 (swiftlang-800.0.43.6 clang-800.0.38)
Target: x86_64-apple-macosx10.9

如果你想在Swift3中实现Objective-C协议,你需要使用_表示该方法没有第一个参数的标签。

func applicationDidFinishLaunching(_ aNotification: Notification) {

(更新)

抱歉,在我的第一个代码中,我忘记将 NSNotification 替换为 Notification。 (谢谢,Leo Dabus。)

您引用但未使用 NSApplication.shared 的行看起来像是错字。如果您将其替换为 NSApp = NSApplication.shared,并确保 AppDelegate 中的方法签名正确,它应该可以工作。

我遇到了类似的问题,其中 func applicationDidFinishLaunching(_ aNotification: Notification) 没有被调用。

对我来说,问题出在 App Delegate 引用出口

Solution: Just removing it and then connecting it back had resolved the issue for me.

这是重新创建连接的方法