程序启动原理

程序启动原理

一.首先找到程序入口,执行main函数

main -> UIApplicationMain

intmain(intargc,char* argv[]) {@autoreleasepool{// 第三个参数:UIApplication类名或者子类的名称 nil == @"UIApplication"// 第四个参数:UIApplication的代理的代理名称// NSStringFromClass:把类名转化字符串// NSStringFromClass好处:1.有提示功能 2.避免输入错误returnUIApplicationMain(argc, argv,nil,NSStringFromClass([AppDelegate class]));    }}

二.UIApplicationMain底层做事情

1.创建UIApplication对象

2.创建UIApplication的代理对象,而且给UIApplication对象代理属性赋值

3.开启主运行循环,作用接收事件,让程序一直运行

4.加载info.plist,判断下有木有指定main.storyboard,如果指定就会去加载

UIApplicationMain函数会根据principalClassName创建UIApplication对象,根据delegateClassName创建一个delegate对象,并将该delegate对象赋值给UIApplication对象中的delegate属性

UIApplicationMain 接着会建立应用程序的Main Runloop(事件循环),进行事件的处理(首先会在程序完毕后调用delegate对象的application:didFinishLaunchingWithOptions:方法) 程序正常退出时UIApplicationMain函数才返回

图解


你可能感兴趣的:(程序启动原理)