程序启动过程
1、 用户打开APP,首先应该执行的是----> main.m系统文件中的main函数
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
- main函数中执行了一个UIApplicationMain函数,程序正常退出时UIApplicationMain函数才返回
int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);
- 这个函数中有四个参数,argc、argv可以不用过多关注,主要看后面两个。
principalClassName:指定应用程序类名(app的象征),该类必须是UIApplication(或子类)。如果为nil,则用UIApplication类作为默认值。
delegateClassName:指定应用程序的代理类,该类必须遵守UIApplicationDelegate协议。
2、 main函数中的UIApplicationMain函数就指明了程序下一步的去向---->AppDelegate
- UIApplicationMain函数会根据principalClassName创建UIApplication对象,根据delegateClassName创建一个delegate对象,并将该delegate对象赋值给UIApplication对象中的delegate属性
- 接着会建立应用程序的Main Runloop(事件循环),进行事件的处理(首先会在程序完毕后调用delegate对象的application:didFinishLaunchingWithOptions:方法)
3、 iOS程序启动完毕后,创建的第一个视图控件就是---->UIWindow,接着创建控制器的view,最后将控制器的view添加到UIWindow上,控制器的view就会显示在屏幕上。
- UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow
最后用图示意:
程序启动过程图 关系图
网友评论