app程序的执行顺序

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函数传进的参数..

  1. NSStringFromClass[Application calss ]
    返回的是 UIApplication 类的名字, 创建了 程序的第一个对象 Application .
    第三个参数只能是 UIApplication 或者是 UIApplication 的子类

  2. NSStringFromClass [ APPDelegate calss ]
    返回 UIApplication 的Delegate 的 代理类 的名字, 设置了 Delegate ,Application 的代理对象.

    在这个函数中,创建了程序的第一个对象 UIApplication 对象,并且设置了代理对象,…并且在这里一直循环,监听事件的传入, 一旦监听到事件 将事件加入到事件队列中,在事件队列中是先进先出的,一旦监听都系统事件 会将事件传递给 Delegate类 来处理 系统事件.

    Delegate 能处理的系统事件:

    1. 应用程序的生命周期(启动和关闭)
    2. 系统事件(来电,)
    3. 内存警告等.

    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

控制器的创建方式:
  1. [[ alloc ]init ] 来创建一个空的控制器

  2. 通过storyboard 来加载一个 控制器
    步骤:(1). 先加载 一个Storyboard 对象,

    [UIStoryboard  * storyboardWithName:@"main" bundle:nil] ;
    bundle 传一个 nil  是因为:默认是 mainbundle 主路径.
    

    (2). 通过storyboard 来加载一个 控制器:

    [storyboard  instantiateInitialViewController] ;
    
    获取  is initialView  Controller...
    
    [storyboard instantiate  来获取非 initialView  控制器] 
    
  3. 通过xib加载一个控制器

5. UIViewController 中有一个 View 的属性

创建控制器的view 优先级:

  1. loadView [给用户自定义 控制器view]

  2. storyboard – > 用 storyboard来加载控制器 view

  3. 通过 xib 来加载 控制器的view

    [[ UIViewController alloc]init];

  4. name.xib name == UIView ,的先加载 同名去掉 Controller的先加载

  5. name.xib name == UIViewController 的加载 .. 同名加载

  6. 加载一个空的view;

    6.将view展示在window 中 显示

    需要设置 window的rootViewController

      [ self.window  makeKeyAndVisible ] ;
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值