我正在学习iOS开发,以下代码来自Matt Neuberg的 Programming iOS8。这是一个用于创建窗口的app委托类。我不明白 -
@UIApplicationMain
,为什么会出现?它是全局变量的声明吗?didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?
的目的是什么?我没有看到它在函数体中的任何地方使用过。import UIKIT
@UIApplicationMain
class AppDelegate : UIResponder, UIApplicationDelegate {
var window : UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
self.window = UIWindow(frame:UIScreen.mainScreen().bounds)
self.window!.backgroundColor = UIColor.whiteColor()
self.window!.makeKeyAndVisible()
return true
}
}
答案 0 :(得分:2)
Swift中的
@UIApplicationMain
属性取代了琐碎的内容 在Objective-C项目中找到的main.m
文件(其目的是为了 实现主要功能,它是所有C程序的入口点 并调用UIApplicationMain
启动Cocoa Touch运行循环 应用基础设施)。在Objective-C中,每个应用程序配置的
main
(heh)位UIApplicationMain
函数提供的是指定您的某个应用 自定义类作为共享delegate
对象的UIApplication
。 在Swift中,您可以通过添加来轻松指定此类 该@UIApplicationMain
属于该类'}宣言。 (您可以 如果你还是直接调用UIApplicationMain
函数 有理由。在Swift中,你将该调用放在一个顶级代码中main.swift
档案。)
@UIApplicationMain
仅适用于iOS。在OS X中,应用程序委托是 传统上设置在Info.plist
指定的主nib文件中 (与Swift和ObjC相同) - 但是OS X故事板还有 没有主nib文件,所以@NSApplicationMain
在那里做同样的事情。
来自HERE的参考。
第二点didFinishLaunchingWithOptions
:
每个应用都以UIApplicationDelegate
- application:didFinishLaunchingWithOptions:
开头(或更准确地说, - application:willFinishLaunchingWithOptions:
,在实施时)。应用程序调用它来通知其代理启动过程正在完成,并且几乎准备好运行。