应用程序启动原理

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

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上,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值