我刚创建了我的第一个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属性是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)
所述AppDelegate.swift源文件具有两个主要功能:
它创建了应用程序的入口点和运行循环,为您的应用程序提供输入事件.这项工作由UIApplicationMain 属性(@UIApplicationMain)完成,该属性出现在文件的顶部.UIApplicationMain创建一个应用程序对象,负责管理应用程序的生命周期和应用程序委托对象.
它定义了AppDelegate类,即app委托对象的蓝图.应用程序委托创建了一个窗口,用于绘制应用程序的内容,并提供响应应用程序内状态转换的位置.您可以在AppDelegate类中编写自定义应用级代码.
现在 Swift 文档已更新,以下是相关段落:
\n\n\n\nNSApplicationMain
\n将此属性应用于类以指示它是应用程序委托。使用此属性相当于调用 NSApplicationMain( : :) 函数并将此类\xe2\x80\x99s 名称作为委托类的名称传递。
\n如果不使用此属性,请提供一个 main.swift 文件,其中包含调用 NSApplicationMain( : :) 函数的 main() 函数。例如,如果您的应用程序使用 NSApplication 的自定义子类作为其主类,请调用 NSApplicationMain 函数而不是使用此属性。
\n
| 归档时间: |
|
| 查看次数: |
22238 次 |
| 最近记录: |