UIApplication的生命周期

1.创建uiAppliction
 UIApplication 对象介绍:
            
1 > 一个 UIApplication 代表是一个应用程序,而且是单例的。
                  **
用来封装整个应用程序的一个对象 , 比如当应用程序执行到某个时期要做什么 , 生命周期等。
                          
             2> 获取UIApplication对象: [UIApplication sharedApplication];(单例的)
2.当一个iOS程序启动后,首先创建的第一个对象就是UIApplication 对象

3.利用UIApplication可以做一些应用界别的操作
  4 > 利用 UIApplication 可以做一些应用级别的操作。
                 *
应用级别操作:
                    
1 > QQ 有消息的时候右上角的消息条数。
                      
                      
// 获取 UIApplication 对象。
                       UIApplication *app = [UIApplication sharedApplication];
                      
                      
// 设置右上角 , 10 条消息
                       app.applicationIconBadgeNumber =
10 ;
                       
                      
// 取消显示消息
                       app.applicationIconBadgeNumber = 0;


4.联网操作是,状态栏上的等待图片的指示器
  2 > 联网操作时,状态栏上的等待图标指示器。 waiting 图标。
                        UIApplication *app = [UIApplication sharedApplication];
                        app.networkActivityIndicatorVisible = YES;

5.利用UIApplication打开某个资源网站
3 > 利用 UIApplication 打开某个资源:
                         **
系统会自动根据协议识别使用某个 app 打开。
                           UIApplication *app = [UIApplication sharedApplication];
                           **
打开一个网页 :
                           [app openURL:[NSURL URLWithString:
@"http://ios.icast.cn" ]];
                        
                           **
打电话
                           [app openURL:[NSURL URLWithString:
@"tel://10086" ]];
                          
                           **
发短信
                           [app openURL:[NSURL URLWithString:
@"sms://10086" ]];
                          
                           **
发邮件
                           [app openURL:[NSURL URLWithString:
@"mailto://12345@qq.com" ]];

                          
                          
                         **
使用 openURL 方法也可以打开其他应用,在不同应用之间互相调用对方。
                           **
美图秀秀 , 点击分享到 " 新浪微博 " , 打开 " 新浪微博 " 选择账号 , 跳转回 " 美图秀秀 " , 开始分享
                           **
喜马拉雅 , 使用微博、 QQ 账号 登录。都需要应用程序间跳转。
                          
7.UIApplicationMain函数介绍.
 
      
6. UIApplicationMain 函数介绍。
      
/**
       
方法名 :
        参数介绍 :
        argc
:使用 main 函数的 argc 即可
        argv
:使用 main 函数的 argv 即可
        principalClassName
:指定应用程序类名( app 的象征),该类必须是 UIApplication( 或子类 ) ,如果为 nil ,则用 UIApplication 类作为默认值
        delegateClassName
:指定应用程序的代理类, UIApplicationDelegate 协议中定义的方法,在该类中实现 .
       
       
        UIApplicationMain
函数会:
        1>
根据 principalClassName 创建 UIApplication 对象
        2>
根据 delegateClassName 创建一个 delegate 对象,并将该 delegate 对象赋值给 UIApplication 对象中的 delegate 属性
       
       
       
程序正常退出时 UIApplicationMain 函数才返回
       
       
默认调用方式 :
        UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
           
等价于
        UIApplicationMain(argc, argv, @"UIApplication", @"AppDelegate");
       
        **
代理参数必须传递 , 如果传 nil, 则显示 " 黑屏 "
       
        */

10.IOS程序启动过程 

             1 > 打开程序。
                          
            
2 > 调用 main 函数。
                          
            
3 > main 函数中调用 :  UIApplicationMain() 函数。
                *
UIApplicationMain() 函数中 :
                   
1. 创建 UIApplication 对象
                          
                   
2. 创建 AppDelegate 代理对象
                          
                   
3. AppDelegate 代理对象设置给 UIApplication 对象。
                          
                   
4. UIApplicationMain() 函数开启一个 " 死循环(事件循环) " , 所以程序不会退出 , 我们可以任意使用。在这个 " 死循环(事件循环) " 中程序不断监听用户的各种事件 , 依次处理(依靠 " 事件队列 " 实现)。
                          
                   
5. 程序启动完毕 : 触发 application:didFinishLaunchingWithOptions 事件。
                          
                   
                  
在此方法中创建了 application 对象和它的代理对象 , 并设置了 application 的代理对象 , 开启消息循环。在消息循环中不断监测 消息队列 中是否有新的事件 ( 队列是先进先出 )( 事件队列的目的是为了提高性能 ) ( 消息循环可以简单理解为一个死循环 , 当系统有事件被触发 , 事件所执行的方法会放入消息队列中 , 消息循环的作用就是不停的去消息 队列中看有没有新的消息 , 有就执行 , 用户感觉不到等待的时间 )
                  
// 先检查 info.plist 文件中是否有 principalClassName , 如果没有的话 UIApplicationMain 中的 principalClassName , 会默认被指定为 UIApplication , 代理类的会被初始化
             4> 程序退出。
9.UIWindow对象
  1.简介
8. UIWindow 对象。
              ** UIWindow
是一种特殊的 UIView, UIWindow 也是继承自 UIView
                          
              **
通常一个 app 只会有一个 UIWindow 对象。
                          
              ** iOS
程序启动完毕后,创建的第一个视图控件就是 UIWindow ,接着创建控制器的 view ,最后将控制器的 view 添加到 UIWindow 上,于是控制器的 view 就显示在屏幕上了
             
              **
一个 iOS 程序之所以能显示到屏幕上,完全是因为它有 UIWindow
                          
              **
在文档中找 : Cocoa Touch Layer -> UIKit -> Guides -> View Controller Programming Guide for iOS -> View Controller Basics -> 关于 UIWindow 与控制器 View 的关系图片。

                          
              ** 创建过程UIWindow -> UIViewController -> UIView -> UIView加到UIWindow对象中。


1.显示 UIWindow
   8. 显示 UIWindow [ self .window makeKeyAndVisible] )。

2.创建window并显示出来
- ( BOOL )application:( UIApplication *)application didFinishLaunchingWithOptions:( NSDictionary *)launchOptions {
   
// 实例化一个 window 的大小
   
self . window = [[ UIWindow alloc ] initWithFrame :[ UIScreen mainScreen ]. bounds ];
   
self . window . backgroundColor = [ UIColor greenColor ];
   
// 创建一个 UIViewcontroller 处理器
   
UIViewController *rem = [[ UIViewController alloc ] init ];
   
    rem.
view . backgroundColor = [ UIColor grayColor ];
   
// 添加控制器到 window
   
self . window . rootViewController = rem;;
   
   
// window 显示出来
    [
self . window makeKeyAndVisible ];
   
   
   
    return YES;
}
3. 总结
UIwindow就一个作用"显示界面 将来是通过切换不同的控制器View分别显示UIWindow上
4.没有SB文件的原理
  1. 调用 main 函数。
                          
                    
2. 调用 UIApplicationMain 函数。
                          
                    
3. 创建 UIApplication 对象 AppDelegate 对象
                          
                    
4. 设置 UIApplicatio 对象的代理是 AppDelegate 对象。
                   
                    
5. AppDelegate 对象开始监听 " 系统事件(应用程序的事件) " , 进入 " 事件循环 "
                          
                    
6. 程序启动完毕后调用 application: didFinishLaunchingWithOptions: 方法。
                          
                    
7. application: didFinishLaunchingWithOptions: 方法中手动创建 :
                          
                       * UIWindow
                      
                       *
控制器
                      
                       *
设置 UIWindow 的根控制器是刚才创建的控制器
                      
                       * 显示UIWindow
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值