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. hdu 5623 KK's Number(dp)

    问题描述 我们可爱的KK有一个有趣的数学游戏:这个游戏需要两个人,有N\left(1\leq N\leq 5*{10}^{4} \right)N(1≤N≤5∗10​4​​)个数,每次KK都会先拿数.每 ...

  2. Android项目 手机安全卫士(代码最全,注释最详细)之十二 设置中心的界面

    ------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 按惯例,写在前面的:可能在学习Android的过程中,大家会和我一样,学习过大量的基础知识,很多的知识点 ...

  3. BestCoder Round #3 A,B

    A.预处理出来,0(1)输出. Task schedule Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  4. 3.数据库操作相关术语,Oracle认证,insert into,批量插入,update tablename set,delete和truncate的差别,sql文件导入

     1相关术语 语句 含义 操作 DML语句 (Data Manipulation Language) 数据库操作语言 insert update delete select DDL语言 (Date ...

  5. Java基础笔记-String类

    String 类(被final修饰) 字符串是一种特殊的对象,一旦字符串被初始化就不可以被改变了.(内容不变) 例如: String  s = “abc”; String  s1 = new Stri ...

  6. 常见Web Service 使用网址

    下面的网址是常用Web Service http://www.webxml.com.cn/zh_cn/web_services.aspx 里面的很多Web Service接口...可以用到的,很有用!

  7. GitBook是一个命令行工具(Node.js库),我们可以借用该工具使用Github/Git和Markdown来制作精美的图书,但它并不是一本关于Git的教程哟。

    GitBook是一个命令行工具(Node.js库),我们可以借用该工具使用Github/Git和Markdown来制作精美的图书,但它并不是一本关于Git的教程哟. 支持输出多种格式 GitBook支 ...

  8. typedef用法总结。

    引用贴:http://www.cnblogs.com/csyisong/archive/2009/01/09/1372363.html 首先#define为预处理,与typedef是完全不同的机制.详 ...

  9. linux下的gdb调试工具--断点调试

    到目前为止我们的调试手段只有一种: 根据程序执行时的出错现象假设错误原因,然后在代码中适当的位置插入printf,执行程序并分析打印结果,如果结果和预期的一样,就基本上证明了自己假设的错误原因,就可以 ...

  10. Web页面在手机上显示过大问题

    网上抄来了,自己也备忘下:增加<meta name="viewport" content="width=device-width, initial-scale=1. ...