我一直在尝试使用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()
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
答案 0 :(得分:3)
如果要在Swift 3中实现Objective-C协议,则需要使用_
表示该方法没有第一个参数的标签。
func applicationDidFinishLaunching(_ aNotification: Notification) {
(UPDATE)
抱歉,在我的第一个代码中,我忘记将NSNotification
替换为Notification
。 (谢谢,Leo Dabus。)
答案 1 :(得分:0)
您引用的行,但不使用NSApplication.shared
看起来像拼写错误。如果用NSApp = NSApplication.shared
替换它,并确保AppDelegate中的方法签名是正确的,那么应该有效。
答案 2 :(得分:0)