iOS开发经验(4)-UIApplication& UIWindow

目录

  1. [[UIApplication sharedApplication]
  2. UIWindow
1. [[UIApplication sharedApplication]
  • UIApplication对象是应用程序的象征.
    每一个应用都有自己的UIApplication对象,这个对象是系统自动帮我们创建的, 它是一个单例对象.
    一个iOS程序启动后创建的第一个对象就是UIApplication对象
    我们只能通过[UIApplication sharedApplication]获得这个单例对象,不能够手动去创建它.
  • UIApplication作用
    利用UIApplication对象,能进行一些应用级别的操作.(openURL:)
    可以设置应用程序图标右上角的红色提醒数字
    设置联网指示器的可见性
    可以设置应用程序的状态栏
    进行应用之间的跳转.
  • UIApplication Delegate
    UIApplication会在程序一启动时候创建一个遵守UIApplicationDelegate的代理.
    这个就是我们程序一创建时的AppDelegate类。AppDelegate就是遵守了UIApplicationDelegate协议。 在这个类中定义很多监听系统事件的方法.同时也定义了一些应用程序的生命周期方法.
    delegate可处理的事件包括:
    应用程序的生命周期事件(如程序启动和关闭)
    系统事件(如来电)
    内存警告
2. UIWindow
  • UIWindow是一种特殊的UIView,通常在一个app中至少会有一个UIWindow
    iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view,最后将控制器的view添加到UIWindow上,于是控制器的view就显示在屏幕上了。UIWindow可以手动创建,且可以是多个。
    一个iOS程序之所以能显示到屏幕上,完全是因为它有UIWindow
    也就说,没有UIWindow,就看不见任何UI界面
  • 之前想要拿到app的窗口,我们通常的写法是:[UIApplication sharedApplication].keyWindow
    这样写是不安全的,如果应用程序没有跳转,这种写法还算是可行的,但是如果应用程序出现了跳转(分享跳转到其他APP,访问系统相册等),这时返回原APP,你会发现加载原窗口上的视图位置会发生明显偏移,查阅了一些资料,发现如果写成[[[UIApplication sharedApplication]delegate]window]就不会出现上述问题
  • 更换RootviewController

你可能感兴趣的:(iOS开发经验(4)-UIApplication& UIWindow)