iOS App生命周期

作者: 沧州宁少 | 来源:发表于2017-11-08 15:20 被阅读13次

    iOS App的生命周期

    增加自己对iOS声明周期理解,转载自,Apple App Cycle

    一个项目默认会有一个main文件。

       #import <UIKit/UIKit.h>
        
       #import "AppDelegate.h"
    
       int main(int argc, char * argv[])
       {
       @autoreleasepool {
        return UIApplicationMain(argc, argv, nil,         NSStringFromClass([AppDelegate class]));
       }
    } 
    

    这个函数的主要作用是

    • 创建一个UIApplication对象
    • 创建它对应的一个代理对象
    • 开启RunLoop运行循环
    • 如果UIStoryBoard存在的话,则从UIStoryBoard中加载用户界面

    在应用程序启动的时候,UIApplication会初始化一些核心对象,并启动运行。UIApplication对象是每个iOS的核心对象。负责帮助iOS系统和其他对象之间的交互

    列表列举一下每个对象

    • UIApplication 管理事件循环和高层组件的行为,负责完成iOS系统和我们定义对象的交互。

    • UIAppdelegate 监听Application中各种状态

    • Documents和Data Objects 数据模型对象存储应用的内容。针对特定应用的。

    • UIViewController 视图管理器管理应用程序内容在屏幕上的显示。视图控制器管理着一个根视图和一个子视图的集合。视图控制器通过把视图View安装到UIWindow上以展示在屏幕上。UIViewController是所有视图控制器的基类。封装了类似屏幕旋转。视图展示等一些列的操作。

    • UIWindow 窗口对象UIWindow。协调的屏幕上一个或者多个视图的展示。 大多数应用只有一个窗口。有一些应用有更多的窗口。但应用程序可能额外的窗口,用于在有外接显示器上显示内容。窗口内容从来不会被替换。屏幕内容的改变都是通过视图控制器来完成的。除了管理视图。窗口对象和UIApplication传递事件到UIView和CALayer.

    • UIView/CALayer 视图和控件提供可视化的展示。层对象实际上是代表视觉内容的数据对象,视图会大量的使用层对象来控制内容。

    core_objects_2x.png

    主运行循环

    应用程序的运行循环处理所有与用户相关的事件。UIApplication对象在应用启动的时候运行循环,用来处理事件和视图的更新。顾名思义,各种事件在主运行循环串行执行。保证了执行的先后顺序。

    用户和设备交互的事件是由操作系统产生的,这些事件发生到UIKit会建立一个端口。事件会在一个事件队列中排序。逐个分发。一个触摸(Touch)事件通常先分发到主窗口对象,然后依次分发到触摸事件发生的视图。但是这些事件并非是通过主运行循环进行分发。有些事件发生到代理对象和函数对象中。iOS中主要的事件类型包括:

    • 触摸事件
    • 远程控制事件
    • 摇晃事件
    • 加速器事件
    • 定位
    event_draw_cycle_a_2x.png

    应用的执行状态

    根据系统中发生的动作,应用会从一个状态转换到另外一个状态。比如,当用户按了Home键、电话打进来、或者其它中断放生,当前运行的应用就会切换自身的状态。应用的状态转换如下图所示:

    应用的状态包括:

    • 未运行

      程序未启动

    • 未激活

      程序在前台运行,不给没有接收到事件。没有处理事件之前 处于这个状态。

    • 激活

      程序在前台接收到事件。

    • 后台

    程序在后台而且能执行代码,大多数程序进入这个状态后会在在这个状态上停留一会。时间到之后会进入挂起状态(Suspended)。有的程序经过特殊的请求后可以长期处于Backgroud状态

    • 挂起

      程序在后台不能执行代码。系统会自动把程序变成这个状态而不发送通知。

    大部分的状态转换都在UIApplicationDelegate
    中有相应的回调方法。这些方法是根据状态变化进行响应的地方,你可以通过重载这些方法实现自定义的操作。

    应用结束

    应用随时准备要退出。因此不能依靠退出时的动作来保存或者进行某些比较复杂的操作。当内存不够时,系统可能会关闭(Terminate)某个后台应用;一个应用有不当的行为或者不能及时响应事件,也可能被系统主动关闭

    相关文章

      网友评论

        本文标题:iOS App生命周期

        本文链接:https://www.haomeiwen.com/subject/nnqymxtx.html