我不理解App委托类中的两个字段

时间:2015-07-16 08:06:17

标签: ios swift

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

  1. 在第二行是什么@UIApplicationMain,为什么会出现?它是全局变量的声明吗?
  2. 参数didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?的目的是什么?我没有看到它在函数体中的任何地方使用过。
  3.  
    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
        }
    }
    

1 个答案:

答案 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:,在实施时)。应用程序调用它来通知其代理启动过程正在完成,并且几乎准备好运行。