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
)文件包含应用程序委托类的实例
从Cmain
调用NSApplicationMain
,它将使用步骤1和2中的信息来设置应用程序
您还可以在Cmain
中以编程方式完成这一切,正如您在问题中所示
Swift@NSApplicationMain
指令自动处理应用程序的启动,并将委托设置为应用该指令的类(因此您不再需要nib来设置委托,也不需要以编程方式设置委托)