UIApplication

来源:互联网 发布:个体户记账软件 编辑:程序博客网 时间:2024/05/09 17:26

UIApplication

标签(空格分隔): UI


程序启动过程

  • main -> UIApplicationMain -> 通知代理做事

UIApplicationMain底层实现:

// principalClassName:描述UIApplication的类名字符串// delegateClassName:描述UIApplication代理的类名字符串int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);
  • 创建UIApplication对象
  • 创建UIApplication的代理对象,并且设置为UIApplication的代理.
  • 开启一个主运行循环,处理事件
  • 加载info.plist文件,判断是否有Main.storyboard,如果有就会去加载。
  • 有Main.storyboard才会执行以下步骤
    • 加载Main.storyboard,
    • 创建窗口
    • 初始化storyboard描述的控制器
    • 设置窗口的根控制器,并且显示窗口

Application创建方式

  • 程序一启动系统就会自动创建
  • 获取方法(单例:只会存在一份)
UIApplication *app = [UIApplication sharedApplication];

作用

  • 修改程序图标的提醒数字
  • 打电话、发信息
  • 打开网页
  • 设置联网状态
  • 控制状态栏
    • 修改info.plist文件中状态栏的管理方式
    • 代码手动管理状态栏
UIApplication *app = [UIApplication sharedApplication];// 要手动管理状态栏就要先修改plist文件中状态栏的管理方法[app setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];

AppDelegate

  • AppDelegate不用自己创建,系统会默认帮我们创建。
  • 会自动生成一系列方法

窗口-应用程序创建的第一个控件。

  1. 添加子控件,一般把窗口的根控制器添加上去,通过设置rootViewController就可以把根控制器的view添加到窗口上。
  2. 介绍窗口如何显示。
    • 设置窗口的hiddle属性
  3. 应用程序是有主窗口,通常调用makeKeyAndVisible
  4. window属性,可以识别应用程序中哪些控件还是窗口,有一个比较特殊,状态栏是窗口。
  5. window层级,alert(2000) > statusBar(1000) > normal(0)

addSubView和rootViewController的区别

  • 直接用addSubView,控制器会被释放,控制器就不能处理事件,控制器的view不会自动旋转。
  • 用rootViewController,控制器不会被释放,而且控制器的view会自动旋转
  • 旋转事件->UIApplication ->Window->rootViewController ->旋转控制器的view
0 0