gpt4 book ai didi

swift - swift 的 @NSApplicationMain 文档是否正确?

转载 作者:搜寻专家 更新时间:2023-11-01 07:29:33 24 4
gpt4 key购买 nike

swift documentation对于 @NSApplicationMain 读取:

Using this attribute is equivalent to calling the NSApplicationMain(::) function and passing this class’s name as the name of the delegate class.

NSApplicationMain 签名只接收 argcargv,无法将“类名”传递给它。在互联网上,我发现了两个如何使用 @NSApplicationMain 等效项的“示例”。第一个简单地调用 NSApplicationMain:

NSApplicationMain(Process.argc, Process.unsafeArgv)

第二个创建共享应用程序单例并为其设置委托(delegate):

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

令人惊讶的是,向导创建的应用程序适用于两个版本(使用了 ex delegate,我可以从中获取 NSLog)!怎么会这样?也许 osx 应用程序会忽略委托(delegate),而总是使用 main nib file 中指定的委托(delegate)?还是 NSApplicationMainUIApplicationMain 的一些隐藏逻辑我还不能掌握?有什么提示吗?

最佳答案

是的,那里的文档似乎不太正确。我推荐 filing a bug所以他们知道要修复文档。

设置 Cocoa 应用程序的传统方法是这样的:

  1. Info.plist 指定应用程序包的主要类(NSApplication 或其子类)
  2. MainMenu.nib(或 xib)文件包含应用委托(delegate)类的实例
  3. 从 C main 调用 NSApplicationMain,它使用第 1 步和第 2 步中的信息来设置您的应用。

您也可以在 C main 中以编程方式完成这一切,正如您在问题中所展示的那样。

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

关于swift - swift 的 @NSApplicationMain 文档是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33504159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com