"@UpppplicationMain"是什么意思?

Ján*_*nos 73 swift

我刚创建了我的第一个Swift项目,在AppDelegate.swift一个类声明上面有一行 - 为什么它在那里?!

...
import UIKit
import CoreData

@UIApplicationMain // <- WHY IS IT HERE?
class AppDelegate: UIResponder, UIApplicationDelegate {
... 
Run Code Online (Sandbox Code Playgroud)

ric*_*ter 120

@UIApplicationMainSwift中的属性取代了main.mObjective-C项目中的普通文件(其目的是实现main作为所有C程序入口点的函数,并调用UIApplicationMain启动Cocoa Touch运行循环和应用程序基础结构).

在Objective-C中,该UIApplicationMain函数提供的每个应用程序配置的主要(heh)位指定一个应用程序的自定义类作为共享UIApplication对象的委托.在Swift中,您可以通过将该@UIApplicationMain属性添加到该类的声明来轻松指定此类.(UIApplicationMain如果你有理由,你也可以直接调用该函数.在Swift中,你将该调用放在main.swift文件中的顶级代码中.)

@UIApplicationMain仅适用于iOS.在OS X中,app委托传统上设置在Info.plist指定的主nib文件中(对于Swift和ObjC相同) - 但是对于OS X故事板,没有主nib文件,那么@NSApplicationMain同样的事情也是如此.

  • 现在有"UIApplicationMain"的描述.https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Attributes.html (3认同)
  • 重新判断你的最后一句话,请注意OS X具有等效的@NSApplicationMain (2认同)

Pri*_*nka 8

@UIApplicationMain属性是main.m文件的替换,并且是应用程序启动的入口点.

如果没有这个@UIApplicationMain你的程序可以工作的另一件事就是你要做的就是注释// @ UIApplicationMain`创建main.swift,与目标c中的main.m相同,并写下代码.这将是您的申请的入口点

import Foundation
class FLApplication: UIApplication
{
    override func sendEvent(event: UIEvent!)
    {
        println("Entry Point") // this is an example
    }
}
Run Code Online (Sandbox Code Playgroud)

  • `Foundation` 导入、`FLApplication`、不声明任何子类使用的随机子类化......对不起,除了第一句话之外,这个答案没有任何意义。 (2认同)

Tha*_*ndu 7

所述AppDelegate.swift源文件具有两个主要功能:

  • 它创建了应用程序的入口点和运行循环,为您的应用程序提供输入事件.这项工作由UIApplicationMain 属性(@UIApplicationMain)完成,该属性出现在文件的顶部.UIApplicationMain创建一个应用程序对象,负责管理应用程序的生命周期和应用程序委托对象.

  • 它定义了AppDelegate类,即app委托对象的蓝图.应用程序委托创建了一个窗口,用于绘制应用程序的内容,并提供响应应用程序内状态转换的位置.您可以在AppDelegate类中编写自定义应用级代码.


Wil*_*ken 5

现在 Swift 文档已更新,以下是相关段落:

\n
\n

NSApplicationMain

\n

将此属性应用于类以指示它是应用程序委托。使用此属性相当于调用 NSApplicationMain( : :) 函数并将此类\xe2\x80\x99s 名称作为委托类的名称传递。

\n

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

\n
\n

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Attributes.html

\n