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. 最新的Android SDK安装攻略(动作要快,来晚就失效了)

    Android的环境搭建好折腾,光是下载Android SDK就折腾了好几天, 直接连接,速度接近于0,一行行红色的refused, 然后找软件翻*墙成功(不推荐,软件可能有后门) 但是...速度比老 ...

  2. openfire研究之部署连接管理器(connection manager)

    http://blog.sina.com.cn/s/blog_7325f5150101bafh.html 一. Openfire Connection Manager 简介 Openfire Conn ...

  3. 搭建PhoneCat项目的开发与测试环境

    AngularJS官方网站提供了一个用于学习的示例项目:PhoneCat.这是一个Web应用,用户可以浏览一些Android手机,了解它们的详细信息,并进行搜索和排序操作. 获取源代码 PhoneCa ...

  4. javascript设计模式——Singleton

    单例模式指的是只能被实例化一次. 推荐阅读: http://blog.mgechev.com/2014/04/16/singleton-in-javascript/ 比较通用的一种Singleton模 ...

  5. zoj1108 FatMouse's Speed

    给你每个物体两个参数,求最长的链要求第一个参数递增,第二个参数递减,要求输出任意最长路径. 首先第一反应根据第二个参数排个序,然后不就是最长上升子序列的问题吗? O(nlogn)的复杂度,当然这样可以 ...

  6. Java log4j的环境搭建

    一.Log4j是什么? Log4j是Apache的一个开源代码项目,通过使用Log4j,我们可以控制日志信息输出的目的地.最常见的就是输出到控制台或者日志文件.同时,它强大的一点是可以在C.C++等其 ...

  7. 使用html,JavaScript,ajax写一个小型实例

    //1.创建受捐单位数组 var arrOrgData = [     { "Id": 1, "OrgName": "红十字会" },    ...

  8. Android动画之硬件加速

    你的动画写出来卡嘛?流畅嘛 如果你想提升动画的性能,那就是用它-hardware layers. During animations your views may be redrawn each fr ...

  9. php 表单校验函数库(判断email格式是否正确、http地址是否合法有效、手机号码是否合法)

    /** * 表单校验函数库 */ /** * 判断email格式是否正确 * @param $email */ function is_email($email) { return strlen($e ...

  10. 正则语言(转的 大额_skylar )

    备注:正则表达式真的很头疼,收集起来,用起来很方便的. 常用的元字符 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或 ...