我刚创建了我的第一个Swift项目,在AppDelegate.swift
一个类声明上面有一行 - 为什么它在那里?!
... import UIKit import CoreData @UIApplicationMain // <- WHY IS IT HERE? class AppDelegate: UIResponder, UIApplicationDelegate { ...
rickster.. 120
@UIApplicationMain
Swift中的属性取代了main.m
Objective-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 } }
@UIApplicationMain
Swift中的属性取代了main.m
Objective-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
同样的事情也是如此.
所述AppDelegate.swift源文件具有两个主要功能:
它创建了应用程序的入口点和运行循环,为您的应用程序提供输入事件.这项工作由UIApplicationMain 属性(@UIApplicationMain)完成,该属性出现在文件的顶部.UIApplicationMain创建一个应用程序对象,负责管理应用程序的生命周期和应用程序委托对象.
它定义了AppDelegate类,即app委托对象的蓝图.应用程序委托创建了一个窗口,用于绘制应用程序的内容,并提供响应应用程序内状态转换的位置.您可以在AppDelegate类中编写自定义应用级代码.