美文网首页
解读iOS项目 main.m文件

解读iOS项目 main.m文件

作者: 我是卖报的小行家 | 来源:发表于2020-07-12 10:07 被阅读0次

先上代码

#import <UIKit/UIKit.h>
#import "AppDelegate.h"

int main(int argc, char * argv[]) {
    NSString * appDelegateClassName;
    @autoreleasepool {
        // Setup code that might create autoreleased objects goes here.
        appDelegateClassName = NSStringFromClass([AppDelegate class]);
    }
    return UIApplicationMain(argc, argv, nil, appDelegateClassName);
//第三个参数nil 相当于应用程序类字符型@"UIApplication",创建一个应用程序对象。
}

在main.m文件中只有一个main()方法,且主要导入两个头文件包:UIKit.h和AppDelegate.h

UIApplication对象是应用程序的象征,每一个应用都有自己的UIApplication单例对象。通过[UIApplication sharedApplication]可以获得这个单例对象,一个iOS程序启动后创建的第一个对象就是UIApplication对象,利用UIApplication对象,能进行一些应用级别的操作。

其中在main方法中UIApplicationMain创建一个UIApplication对象。每个ios应用程序都会有且只有一个UIApplication对象,此对象也是单例,负责单例对象的维护和循环运行事件。

程序中一旦创建了某个UIApplication单例对象,对象就会一直循环下去。

通过查看上述int main()函数,发现UIApplicationMain还会创建某个指定类(也是AppDelegate)对象,并设置delegate;

并且UIApplicationMain的第三个参数是NSString类型,代表是该对象所属的类。

1.main启动函数。

2、创建自动释放池。

3、创建UIApplication对象,执行UIApplicationMain 永远不会返回,保证程序不会销毁。

4、创建UIApplication的delegate对象,并将这个delegate对象设置为应用程序对象的代理。

5、delegate对象开始处理(监听)系统事件(没有storyboard)。

6、程序启动完毕的时候,就会调用代理的application:didFinishLaunchingWithOptions:方法。

7、在application:didFinishLaunchingWithOptions:中创建UIWindow。

8、创建和设置UIWindow的rootViewController(将应用程序代理对象中的window实例化,并设置为应用程序的keyWindow主窗口)。

9、开始显示窗口(加载配置文件中指定的storyboard[main.storyboard]文件中带箭头的视图控制器,或者自定义的视图控制器),呈现给用户界面。

UIApplicationMain底层实现
1.根据principalClassName传递的类名创建UIApplication对象
2.创建UIApplicationDelegate对象,给UIApplication对象设置代理
3.开启主运行事件循环,保持程序一直运行
4.加载info.plist,判断下是否指定main,如果指定了,就会去加载

转载于https://www.jianshu.com/p/9e220596ff7f

相关文章

  • 解读iOS项目 main.m文件

    先上代码 在main.m文件中只有一个main()方法,且主要导入两个头文件包:UIKit.h和AppDelega...

  • iOS-应用生命周期

    iOS的入口在main.m文件: int main(int argc, char *argv[]){@autore...

  • iOS程序的执行顺序

    iOS程序的执行顺序 首先从main.m文件的main函数开始执行的。

  • isa底层结构分析

    一、对象的本质 main.m文件 首先,我们使用终端先跳转到把main.m的根目录,把main.m文件使用clan...

  • ios中的main.m文件

    摘要:在ios开发中有一个文件main.m文件,本文我们主要分析这个主函数里面到底做了哪些工作和任务。(转自:云图...

  • React Native入门2(项目结构)

    项目结构说明: 1、android文件夹--包含安卓项目文件 2、ios 文件夹--包含iOS项目文件 3、nod...

  • +[CATransaction synchronize] cal

    项目在iOS11上运行正常,出问题的手机系统10.3.3。 运行项目就会直接崩溃到main.m中,错误信息显示(+...

  • 无标题文章

    开发应用程序都要了解其生命周期。 今天我们接触一下iOS应用程序的生命周期, iOS的入口在main.m文件:in...

  • iOS空白项目配置.gitignore忽略文件

    iOS项目配置.gitignore 忽略文件 1.首先iOS项目创建忽略文件一定要是空白项目,要是导入已有项目则需...

  • main.m文件

    (一) mian.h int main(int argc, char * argv[]) { @autorelea...

网友评论

      本文标题:解读iOS项目 main.m文件

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