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. Zepto.js touch模块深入分析 解决手机点击事件

    源码: // Zepto.js // (c) 2010-2015 Thomas Fuchs // Zepto.js may be freely distributed under the MIT li ...

  2. 持续更新visual studio 命令、快捷键(原创)

    “格式化代码” Ctrl + E + D “注释” Ctrl + E + C “取消注释” Ctrl + E + U “点代替空白”   编辑-高级-显示空白 快捷键 Ctrl + E + S

  3. JavaScript中的this引用

    在JavaScript的学习当中,this关键字的出现频率可不低,所以想想有必要对this关键字做一个总结.在总结过程中,参考的资料来源于书本及网上. 一.定义 1.this是函数内部的一个特殊对象( ...

  4. <转>泛型的内部原理:类型擦除以及类型擦除带来的问题

    参考:java核心技术 一.Java泛型的实现方法:类型擦除 前面已经说了,Java的泛型是伪泛型.为什么说Java的泛型是伪泛型呢?因为,在编译期间,所有的泛型信息都会被擦除掉.正确理解泛型概念的首 ...

  5. Scala入门指南与建议

    最近在学习使用Scala语言做项目,感觉这门语言实在是太优美了!作为一个本科数学.研究生机器学习专业的混合人才(哈哈),这门语言真的是满足了普通计算机编程(告诉计算机怎么做)和函数式编程(告诉计算机做 ...

  6. Python Challenge

    0. 2的38次方 print 2**38 ##apply the result to the url 1. 看图是要right shift两位, 切片即可. import string intab ...

  7. 使用md5判断网站内容是否被篡改

    该脚本比较简单,判断网站根目录是否被篡改,如果被篡改把篡改的文件发送到管理员邮箱 #!/bin/bash #author:luodi date:// #use md5 to check web sit ...

  8. Android 原生listview item伸展收缩效果 (续)

    接上一个原生的listview item的伸展收缩效果. 上一个可能做的有些粗糙,效果也没有这个好,上代码. package com.example.listviewdemo; import java ...

  9. Javascript获取当前时间戳的方法

    定义日期:   Date 对象用于处理日期和时间.   可以通过 new 关键词来定义 Date 对象.以下代码定义了名为 myDate 的 Date 对象:   var myDate=new Dat ...

  10. zmud中文版_汉化补丁_汉化文件ZMUD破解

    ZMUD721中文版 http://pan.baidu.com/s/1mixwIoC