swift的@NSApplicationMain文档是否正确?

swift的@NSApplicationMain文档是否正确?,swift,cocoa,Swift,Cocoa,@NSApplicationMain的Swift内容如下: 使用此属性相当于调用 NSApplicationMain(::)函数,并将该类的名称作为 委托类的名称 但是NSApplicationMain签名只接收argc和argv,无法向其传递“类名”。在互联网上,我发现了两个如何使用@NSApplicationMain等价物的“示例”。第一个简单地调用NSApplicationMain: NSApplicationMain(Process.argc, Process.unsafeArgv)

@NSApplicationMain
的Swift内容如下:

使用此属性相当于调用 NSApplicationMain(::)函数,并将该类的名称作为 委托类的名称

但是
NSApplicationMain
签名只接收
argc
argv
,无法向其传递“类名”。在互联网上,我发现了两个如何使用
@NSApplicationMain
等价物的“示例”。第一个简单地调用
NSApplicationMain

NSApplicationMain(Process.argc, Process.unsafeArgv)
第二个创建共享应用程序单例并将委托设置为它:

NSApplication.sharedApplication()
NSApp.delegate = AppDelegate()
NSApplicationMain(Process.argc, Process.unsafeArgv)

令人惊讶的是,向导创建的应用程序可以与这两个版本一起使用(使用ex delegate,我可以从中
NSLog
)!这怎么可能?可能osx应用程序忽略了委托,并且始终使用
主nib文件中指定的委托?或者是我还不能掌握的
NSApplicationMain
UIApplicationMain
中隐藏的逻辑?有什么提示吗?

是的,文档似乎不太正确。我建议让他们知道如何修复文档

设置Cocoa应用程序的传统方式如下所示:

  • Info.plist指定应用程序包的主要类(
    NSApplication
    或其子类)
  • main menu.nib
    (或
    xib
    )文件包含应用程序委托类的实例
  • 从C
    main
    调用
    NSApplicationMain
    ,它将使用步骤1和2中的信息来设置应用程序
  • 您还可以在C
    main
    中以编程方式完成这一切,正如您在问题中所示

    Swift
    @NSApplicationMain
    指令自动处理应用程序的启动,并将委托设置为应用该指令的类(因此您不再需要nib来设置委托,也不需要以编程方式设置委托)