@NSApplicationMain在xcode中的swift编程项目中有什么用处

时间:2014-12-14 12:47:56

标签: xcode macos swift

我使用Xcode 6和swift语言创建了一个示例项目。

Xcode使用以下代码

创建了AppDelegate.swift
import Cocoa

@NSApplicationMain

class AppDelegate: NSObject, NSApplicationDelegate {

    func applicationDidFinishLaunching(aNotification: NSNotification) {
        // Insert code here to initialize your application
    }

    func applicationWillTerminate(aNotification: NSNotification) {
        // Insert code here to tear down your application
    }


}

@NSApplicationMain是什么意思,我的main.mm/main.m文件在哪里有main()?

1 个答案:

答案 0 :(得分:31)

正如release notes中提到的那样:

  

OS X应用现在可以将@NSApplicationMain属性应用于其应用委托类,以便为应用生成隐式主要内容。   此属性的工作方式与iOS应用程序的@UIApplicationMain属性相同。"

因此,基本上,它是一种让您的应用程序自动启动并运行的方法,而无需在单独的Swift文件中编写一些全局级样板文件。在以前版本的Xcode中,当您创建一个新的Swift Cocoa项目时,Xcode会为新的OS X项目生成一个main.swift文件,如下所示:

import Cocoa

NSApplicationMain(Process.argc, Process.unsafeArgv)

这是主要的切入点。现在Xcode并不打算生成这个文件;相反,它只是用@NSApplicationMain标记你的app委托,这个引导步骤在幕后处理。

来自The Swift Programming Language的更多信息:

  

将此属性应用于类以指示它是应用程序委托。使用此属性等同于调用NSApplicationMain函数并将此类的名称作为委托类的名称传递。

     

如果您不使用此属性,请提供一个main.swift文件,其中main函数调用NSApplicationMain函数。例如,如果您的应用使用NSApplication的自定义子类作为其主要类,请调用NSApplicationMain函数而不是使用此属性。