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

Omk*_*kar 20 macos xcode 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
    }


}
Run Code Online (Sandbox Code Playgroud)

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

Mat*_*son 34

正如它在发行说明中所提到的:

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

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

import Cocoa

NSApplicationMain(Process.argc, Process.unsafeArgv)
Run Code Online (Sandbox Code Playgroud)

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

更多信息来自The Swift Programming Language:

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

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