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

 int main(int argc, char * argv[]) {
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Info.plist" ofType:nil];
NSDictionary *dcit = [NSDictionary dictionaryWithContentsOfFile:filePath];
id objc = dcit[@"UIMainStoryboardFile"]; @autoreleasepool {
第三个参数:UIApplication类或者子类类型字符串,类型不能乱穿
第四个参数:UIApplication代理类型字符串类型不能乱穿
NSStringFromClass([AppDelegate class])
NSStringFromClass:把类名转换成字符串
return UIApplicationMain(argc, argv, @"UIApplication", NSStringFromClass([AppDelegate class]));
如果直接写字符串,弊端:有可能写错,没有提示
NSStringFromClass:有提示,肯定不会写错,编译时期就会检查错误 }
}
 

iOS程序启动原理(简单)的更多相关文章

  1. iOS程序启动原理---iOS-Apple苹果官方文档翻译

    本系列所有开发文档翻译链接地址:iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址 //转载请注明出处--本文永久链接:http://www.cnblogs.com/Ch ...

  2. IOS程序启动原理

    1.Info.plist 建立一个工程后,会在Supporting files文件夹下看到一个“工程名-Info.plist”的文件,该文件对工程做一些运行期的配置,非常重要,不能删除 常见属性(红色 ...

  3. iOS 程序启动原理

    很多工作一段时间的iOS程序员,总是每天沉浸在代码里,大家总是按照xcode的规定生成项目,然后就开始码代码了,但是大家知道app背后的启动过程吗?当点击程序图标启动程序开始到退出,程序在运行过程中到 ...

  4. iOS基础 - iOS程序启动原理

    一.UIApplicationMain 在main.m的main函数中执行了UIApplicationMain这个方法,这是ios程序的入口点 int UIApplicationMain(int ar ...

  5. iOS 程序启动流程

    iOS程序启动原理   技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http://weibo.com/luohanchenyilong   iOS应用程序运行 ...

  6. iOS app 程序启动原理

    iOS app 程序启动原理 Info.plist: 常见设置     建立一个工程后,会在Supporting files文件夹下看到一个"工程名-Info.plist"的文件, ...

  7. iOS开发——UI进阶篇(七)程序启动原理、打电话、发短信

    一.Info.plist常见的设置 1.建立一个工程后,会在Supporting files文件夹下看到一个“工程名-Info.plist”的文件,该文件对工程做一些运行期的配置,非常重要,不能删除 ...

  8. iOS程序启动的过程及原理

    iOS程序启动的过程及原理 文字部分 先执行main函数,main内部会调用UIApplicationMain函数 UIApplicationMain函数里面做了什么事情??? 1> 创建UIA ...

  9. iOS APP程序启动原理

    UIApplication 程序启动原理 一个应用程序运行就必须要有一个进程,一个进程至少要有一个线程,我们把这个线程叫做主线程,主线程开启之后会开启一个主运行循环,如果不开启一个运行循环,程序开启了 ...

随机推荐

  1. 采用dlopen、dlsym、dlclose加载动态链接库【总结】

    摘自http://www.cnblogs.com/Anker/p/3746802.html 采用dlopen.dlsym.dlclose加载动态链接库[总结]   1.前言 为了使程序方便扩展,具备通 ...

  2. #include <queue>

    双端队列deque比向量vector更有优势 双端队列(deque) 连续存储的指向不同元素的指针所组成的数组<deque> 队列(queue) 先进先出的值的排列 <queue&g ...

  3. Linux主机规划与磁盘分区

    各硬件设备在Linux中的文件名 在Linux系统当中,几乎所有的硬件设备文件都在/dev这个目录内. 各硬件设备在Linux中的文件名: 设备 设备在Linux中的文件名 IDE接口的硬盘 /dev ...

  4. nyoj 43 24 Point game(dfs暴力)

    描述 There Point game. In .The expression mustn't have any other operator except plus,minus,multiply,d ...

  5. 使用javascript oop开发滑动(slide) 菜单控件

    这里使用原生的javascript,用面向对象的方式创建一个容易维护使用方便的滑动菜单 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tra ...

  6. C#核编之系统数据类型和相应的C#关键字

    和任何编程语言一样,C#定义了一组用于表示局部变量.成员变量.返回值以及输入参数的基本数据类型.然而,与其他编程语言不同的是,这些关键字不只是编译器能识别的标记.C#关键字其实是System命名空间中 ...

  7. Inno setup complier将文件添加注册表

    [Registry] Root: HKCR; Subkey:.; ValueType: string; ValueName: ; ValueData:"264file" Root: ...

  8. 转:消除SDK更新时的“https://dl-ssl.google.com refused”错误

    消除SDK更新时,有可能会出现这样的错误: Download interrupted: hostname in certificate didn't match: <dl-ssl.google. ...

  9. (转)C# 读取EXCEL文件的三种经典方法

    原文地址http://www.open-open.com/code/view/1420029490093 1.方法一:采用OleDB读取EXCEL文件: 把EXCEL文件当做一个数据源来进行数据的读取 ...

  10. java入门概念个人理解之访问修饰符

      类.方法.成员变量和局部变量的对应修饰符是否可以使用 修饰符 类 成员访求 构造方法 成员变量 局部变量 abstract(抽象的) √ √ - - - static (静态的) - √ - √ ...