我使用Xcode 6和swift语言创建了一个示例项目。
Xcode使用以下代码
创建了AppDelegate.swiftimport 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()?
答案 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
函数而不是使用此属性。