AppDelegate 在哪里设置为应用程序的委托?

Where the AppDelegate get set as a delegate for the application?

环境,Swift 5.3 和 Xcode 12

通常我们 someObject.delegate = self 将当前 class 设置为某些 class 实例的委托。但是,在 AppDelegate 内部没有这样的赋值使其成为应用程序的委托。

import Cocoa

@main
class AppDelegate: NSObject, NSApplicationDelegate {
    func applicationDidFinishLaunching(_ aNotification: Notification) {}

    func applicationWillTerminate(_ aNotification: Notification) {}
}

那么应用程序的 delegate 属性 在哪里设置?

@UIApplicationMain属性表示这个class是应用委托,https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID589.

与调用UIApplicationMain(:,:,:,:)相同。如果未使用该属性,请提供一个 main.swift 文件,其中包含调用 UIApplicationMain(:,:,:,:)(也适用于 NSApplication)的顶层代码。

@main好像和@UIApplicationMain一样的效果。将 @main 替换为 @UIApplicationMain,应用程序运行正常,经过测试。