一尘不染

@NSApplicationMain在XCode中的Swift编程项目中有什么用

swift

我已经使用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文件在哪里?


阅读 373

收藏
2020-07-07

共1个答案

一尘不染

发行说明中所述

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

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

import Cocoa

NSApplicationMain(Process.argc, Process.unsafeArgv)

那是主要的切入点。现在,Xcode不再费心生成此文件。相反,它只是用您的应用程序委托标记,@NSApplicationMain并且该引导步骤在后台处理。

更多来自The Swift Programming
Language的信息

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

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

2020-07-07