app程序的执行顺序
2016-03-15 00:08
288 查看
app程序启动 执行步骤
1.程序的入口
int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } }
找到main 函数,进入main 函数开始执行程序
2.UIApplicationMain 函数
在UIApplicationMain 函数中 有四个参数:1. 2. 是main函数传进的参数..
NSStringFromClass[Application calss ]
返回的是 UIApplication 类的名字, 创建了 程序的第一个对象 Application .
第三个参数只能是 UIApplication 或者是 UIApplication 的子类
NSStringFromClass [ APPDelegate calss ]
返回 UIApplication 的Delegate 的 代理类 的名字, 设置了 Delegate ,Application 的代理对象.
在这个函数中,创建了程序的第一个对象 UIApplication 对象,并且设置了代理对象,…并且在这里一直循环,监听事件的传入, 一旦监听到事件 将事件加入到事件队列中,在事件队列中是先进先出的,一旦监听都系统事件 会将事件传递给 Delegate类 来处理 系统事件.
Delegate 能处理的系统事件:应用程序的生命周期(启动和关闭)
系统事件(来电,)
内存警告等.
3.UIWindow 的创建
1. 在Delegate 中有一个 window 属性
self.window = {[UIWindon alloc] initWithFrame:[UIScreen mainScreen].bounds ];
来获取一个Window
2. 一个程序可以有多个window ,但只能有一个 mainWindow
[UIApplication shareApplication].keyWindow 来获取主窗口[UIApplication shareApplication].windows 获取所有窗口
3. [window makeKeyAndVisible ];
(1).让 window 成为主窗口(2).visible 显示窗口
(3).主窗口在 6.0之前是 此窗口的文本框不允许编辑
4. UIWindow 中有一个属性 rootViewController (设置根控制器) – >UIViewController
控制器的创建方式:[[ alloc ]init ] 来创建一个空的控制器
通过storyboard 来加载一个 控制器
步骤:(1). 先加载 一个Storyboard 对象,
[UIStoryboard * storyboardWithName:@"main" bundle:nil] ; bundle 传一个 nil 是因为:默认是 mainbundle 主路径.
(2). 通过storyboard 来加载一个 控制器:
[storyboard instantiateInitialViewController] ; 获取 is initialView Controller... [storyboard instantiate 来获取非 initialView 控制器]
通过xib加载一个控制器
5. UIViewController 中有一个 View 的属性
创建控制器的view 优先级:loadView [给用户自定义 控制器view]
storyboard – > 用 storyboard来加载控制器 view
通过 xib 来加载 控制器的view
[[ UIViewController alloc]init];
name.xib name == UIView ,的先加载 同名去掉 Controller的先加载
name.xib name == UIViewController 的加载 .. 同名加载
加载一个空的view;
6.将view展示在window 中 显示
需要设置 window的rootViewController[ self.window makeKeyAndVisible ] ;
相关文章推荐
- Android 事件处理基于Handler 消息处理
- Angularjs整合微信UI(weui)
- iTween基础之CameraFade(摄像机淡入淡出)
- swift简单实现左右滑动页面
- iOS 开发小结之layoutSubviews调用
- swift 接水果游戏ios源码
- c++中的对象引用(object reference)与对象指针的区别
- 基于Android的Java学习路线图-转载自遥哥20160302
- Java与Android不得不说的故事 --摘自网友博客20160302
- 在android studio中,查看SHA1和MD5
- 在android studio中,引用.so文件
- android事件分发(一)
- android事件分发(二)
- iOS自定义转场动画实战讲解
- 百度语音应用到AndroidStudio中
- umeng分享出现的问题
- Android 录音
- Android OutOfMemoryError异常解决方法
- 关于android 的org.json类JsonObject解析值为null的出现的问题
- unity的input鼠标