美文网首页
iOS开发中的UIApplication(_:_:_:_:)

iOS开发中的UIApplication(_:_:_:_:)

作者: zedds | 来源:发表于2017-07-10 20:03 被阅读0次

官方解释:This function is called in the main entry point to create the application object and the application delegate and set up the event cycle.

在iOS开发中,新建项目之后Xcode会自动帮忙进行了很多配置,这导致我们一上手就进行开发,难免会对App启动流程的概念比较模糊,C语言中,程序的入口是main函数,这里什么是入口呢?应用程序是从哪里开始运行的呢?了解这个,不仅是稳固基础,而且对整个应用开发都很重要。

在Objective-C中:

由于Objective-C是面向对象的C,当然C的特性都有,其中也有一个main函数,这就是应用程序的入口。打开 main.m 函数,只有一行代码,而其中就是我们的主角 UIApplicationMain(_:_:_:_:) ,这个函数会创建若干对象,使应用得以运行。首先,该函数会创建一个 UIApplication 单例。接着根据传入的第四个参数创建相应的类实例,并将其设置为应用的委托对象。该对象会受到各种应用委托消息,例如,内存过低、应用关闭、进入后台运行状态或启动完毕。

int main(int argc, char * argv[]) {
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}
在swift中:

swift中没有main文件,当然也就没有main函数,但是可以在Appdelegate.swift文件中看到@UIApplicationMain,当然,这就是Xcode为我们配置好的,其实swift也有main函数,或者说有这么个程序入口,只是@UIApplicationMain帮我们自动生成了,就不用自己去写,也看不到。一般不需要改动,当然也可以自己配置入口来创建一个UIApplication子类。首先需要删除 @UIApplicationMain 或者注释掉,再新建一个main.swift文件,添加以下代码

import UIKit
UIApplicationMain(Process.argc, Process.unsafeArgv, nil,
                  NSStringFromClass(AppDelegate))

这里可以把nil换成自己的UIApplication子类,再次编译问题解决。

相关文章

网友评论

      本文标题:iOS开发中的UIApplication(_:_:_:_:)

      本文链接:https://www.haomeiwen.com/subject/yauuhxtx.html