我一直在尝试使用 Swift 3,但无法上手。以下代码正在编译,但它不记录任何内容。看起来
applicationDidFinishLaunching
没有被调用。我在这里遗漏了一些关键部分吗?
来源/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()
附注还有一个类似的问题是关于
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
如果你想在 Swift 3 中实现 Objective-C 协议,你需要使用
_
表示该方法的第一个参数没有标签。
func applicationDidFinishLaunching(_ aNotification: Notification) {
(更新)
抱歉,在我的第一个代码中,我忘记将
NSNotification
替换为 Notification
。 (谢谢,利奥·达布斯。)
您引用但不使用
NSApplication.shared
的行看起来像是一个拼写错误。如果将其替换为 NSApp = NSApplication.shared
,并确保 AppDelegate 中的方法签名正确,应该可以工作。
对我来说...启动时我看不到任何窗口。 当我在其中一个窗口上勾选该框时,当我运行应用程序时,applicationDidFinishLaunching 就会被调用。