【问题标题】:I don't understand two fields in an App delegate class我不理解 App 委托类中的两个字段
【发布时间】:2015-10-05 13:40:57
【问题描述】:

我正在学习iOS开发,以下代码来自Matt Neuberg的Programming iOS8一书。它是一个用于创建窗口的应用程序委托类。我不明白-

  1. 在第二行中@UIApplicationMain 是什么,为什么会出现?它是一个全局变量的声明吗?
  2. 参数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
    }
}

【问题讨论】:

  • 你可以在 Apple 的网站上阅读更多关于 Application's Lifecycle 的信息。
  • 谢谢!这是一个很好的资源!

标签: ios swift


【解决方案1】:

Swift 中的@UIApplicationMain 属性取代了琐碎的 main.m 在 Objective-C 项目中找到的文件(其目的是 实现作为所有 C 程序入口点的 main 函数 并致电UIApplicationMain 启动 Cocoa Touch 运行循环和 应用基础架构)。

在 Objective-C 中,每个应用程序配置的 main (heh) 位 UIApplicationMain 函数提供的是指定您的应用程序之一 自定义类作为共享UIApplication 对象的delegate。 在 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:)。它由应用程序调用以通知其委托启动过程已完成,并且几乎可以运行了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 2013-11-26
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多