应用程序启动原理

来源:互联网 发布:淘宝明星店铺 编辑:程序博客网 时间:2024/05/17 02:48

整理印象笔记之 应用程序启动原理

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

1、执行main函数,在mian函数中执行UIApplicationMain函数
2、在mian函数中创建UIApplication对象
2、创建UIDelegate对象,并成为UIApplication对象代理,
3、开启一个主运行循环,处理事件(Runloop)
4、加载info.plist,并且判断有没有指定的mian.storyboard,如果指定就去加载,如果没有则需要在AppDelegate的程序启动完成只会代码加载
这里写图片描述
在加载storyboard时会作以下操作
- 创建一个窗口
- 加载main.storyboard,并且加载 main.storyboard指定的控制器
- 把新创建的控制器作为窗口的控制器显示出来

没有指定main则在代码里加载

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    //创建窗口(必须要有尺寸且不可被释放)    self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];    //创建窗口的控制器    UIViewController *vc = [[UIViewController alloc]init];    //设置窗口根控制器    self.window.rootViewController = vc;    //窗口的显示    [self.window makeKeyWindow];    return YES;}

5、监听系统事件(AppDelegate里的那些系统方法)

@implementation AppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    return YES;}- (void)applicationWillResignActive:(UIApplication *)application {}- (void)applicationDidEnterBackground:(UIApplication *)application {}- (void)applicationWillEnterForeground:(UIApplication *)application {}- (void)applicationDidBecomeActive:(UIApplication *)application {}- (void)applicationWillTerminate:(UIApplication *)application {}@end

6、iOS程序启动完后,创建的第一个视图控件就是UIWindow,接着创建控制器的View,将控制器的View添加至UIWindow上,

原创粉丝点击