5

我一直在尝试使用 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()

ps 关于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
4

3 回答 3

4

如果要在 Swift 3 中实现 Objective-C 协议,则需要使用_指示方法的第一个参数没有标签。

func applicationDidFinishLaunching(_ aNotification: Notification) {

(更新)

抱歉,在我的第一个代码中,我忘记NSNotificationNotification. (谢谢,Leo Dabus。)

于 2016-09-04T00:19:06.963 回答
1

我有一个类似的问题,func applicationDidFinishLaunching(_ aNotification: Notification)没有被调用。

对我来说,问题在于App Delegate 引用 outlet

在此处输入图像描述

解决方案:只需将其删除然后重新连接即可解决我的问题。

这是重新创建连接的方法

在此处输入图像描述

于 2019-08-02T03:19:12.853 回答
0

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

于 2018-05-09T13:53:45.093 回答