您的位置:首页 > 移动开发

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 ] ;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: