@NSApplicationMain swift文档是否正确?

时间:2015-11-03 16:24:07

标签: swift cocoa

@NSApplicationMain的Swift documentation读取:

  

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

NSApplicationMain签名只收到argcargv,无法通过"类名"它。在互联网上,我找到了两个"例子"如何使用@NSApplicationMain等价物。首先只需调用NSApplicationMain

NSApplicationMain(Process.argc, Process.unsafeArgv)

第二个创建共享应用程序单例并将委托设置为它:

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

令人惊讶的是,向导创建的应用程序适用于两个版本(使用ex delegate,我可以从NSLog开始)!怎么会这样?对于osx应用程序,可能会忽略委托,并且始终使用main nib file中指定的委托。或者,NSApplicationMainUIApplicationMain我还能掌握一些隐藏的逻辑?任何提示?

1 个答案:

答案 0 :(得分:2)

是的,那里的文档似乎不太正确。我建议filing a bug,以便他们知道修复文档。

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

  1. Info.plist指定应用包的主要类(NSApplication或其子类)
  2. MainMenu.nib(或xib)文件包含应用委托类的实例
  3. 从C NSApplicationMain致电main,并使用步骤1和2中的信息设置您的应用。
  4. 您也可以在C main中以编程方式执行此操作,如您在问题中所示。

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