我已经使用Xcode 6和快速语言创建了一个示例项目。
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()的main.mm/main.m文件在哪里?
如发行说明中所述:
OS X应用程序现在可以将@NSApplicationMain属性应用于其应用程序委托类,以便为该应用程序生成隐式主程序。此属性的作用方式与iOS应用程序的@UIApplicationMain属性相同。”
因此,基本上,这是一种引导应用程序运行的方法,而无需在单独的Swift文件中编写一些全局级别的样板文件。在以前版本的Xcode中,当您创建新的Swift Cocoa项目时,Xcode会main.swift为新的OS X项目生成一个文件,如下所示:
main.swift
import Cocoa NSApplicationMain(Process.argc, Process.unsafeArgv)
那是主要的切入点。现在,Xcode不再费心生成此文件。相反,它只是用您的应用程序委托标记,@NSApplicationMain并且该引导步骤在后台处理。
@NSApplicationMain
更多来自The Swift Programming Language的信息:
将此属性应用于类以指示它是应用程序委托。使用此属性等效于调用该NSApplicationMain函数并将此类的名称作为委托类的名称传递。 如果不使用此属性,请为main.swift文件提供一个main调用该NSApplicationMain函数的函数。例如,如果您的应用程序使用的自定义子类NSApplication作为其主体类,请调用该NSApplicationMain函数,而不要使用此属性。
将此属性应用于类以指示它是应用程序委托。使用此属性等效于调用该NSApplicationMain函数并将此类的名称作为委托类的名称传递。
NSApplicationMain
如果不使用此属性,请为main.swift文件提供一个main调用该NSApplicationMain函数的函数。例如,如果您的应用程序使用的自定义子类NSApplication作为其主体类,请调用该NSApplicationMain函数,而不要使用此属性。
main
NSApplication