• iOS程序启动原理(简单)


    1.执行main -> 执行UIApplicationMain

    1. UIApplicationMain底层实现 
      • 1.创建UIApplication对象
      • 2.创建UIApplication代理对象
      • 3.开启主要事件循环,保证程序一直运行,开始处理事件
      • 4.解析info.plist,判断下有没有指定main.storyboard

    3.指定main.storyboard就会加载

    • 1.创建窗口(一个程序要想显示内容,必须有窗口)
    • 2.加载main.storyboard(UIStoryboard),创建storyboard描述的控制器(箭头指向的控制器)
    • 3.设置窗口的根控制器
    • 4.显示窗口

    4.UIApplication对象

    • 单例:整个app下只分配一次内存
    • 获取:shareApplication
    • 作用:1.设置提醒数字 2.设置联网状态 3.设置状态栏 4.打电话,打开网页

    5.UIApplication代理

    • 代理:自己不想做的事情,就搞个代理帮我做
    • 作用:1.监听应用程序生命周期方法 3.内存警告

    6.窗口

    • 作用:一个程序要想显示内容,必须有窗口
    • 窗口创建方式:1.UIStoryboard 2.代码
    • 窗口通过代码创建注意 
      • 1.必须要强引用
      • 2.窗口要有尺寸
      • 3.必须设置窗口的根控制器
    • 窗口:键盘.状态栏
    • 窗口层级 : alert > statusBar > normal
     
     程序启动

     1.执行main函数 -> UIApplicationMain

     UIApplicationMain底层实现
      1.创建UIApplication对象
      2.创建UIApplication代理对象,设置UIApplication代理
      3.开启主要事件循环,目的:让程序一直运行,可以处理事件
      4.解析info.plist,判断下有没有指定main.stroyboard
     1 int main(int argc, char * argv[]) {
     2     NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Info.plist" ofType:nil];
     3     NSDictionary *dcit = [NSDictionary dictionaryWithContentsOfFile:filePath];
     4     id objc = dcit[@"UIMainStoryboardFile"];
     5    
     6     @autoreleasepool {
     7          第三个参数:UIApplication类或者子类类型字符串,类型不能乱穿
     8          第四个参数:UIApplication代理类型字符串类型不能乱穿
     9          NSStringFromClass([AppDelegate class])
    10          NSStringFromClass:把类名转换成字符串
    11         return UIApplicationMain(argc, argv, @"UIApplication", NSStringFromClass([AppDelegate class]));
    12          如果直接写字符串,弊端:有可能写错,没有提示
    13          NSStringFromClass:有提示,肯定不会写错,编译时期就会检查错误
    14        
    15     }
    16 }
     
  • 相关阅读:
    记忆力训练今天早上有了点小进步
    刻意练习
    12.12周计划
    12.6周总结
    The Power of Reading Insights
    Storytelling with Data
    nexus私服和快照正式版本etc
    springboot启动流程分析
    容器启动getBean的流程分析
    canal简介
  • 原文地址:https://www.cnblogs.com/l110/p/4937864.html
Copyright © 2020-2023  润新知