iOS知识总结程序猿阵线联盟-汇总各类技术干货

iOS App生命周期

2017-11-08  本文已影响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会初始化一些核心对象,并启动运行。UIApplication对象是每个iOS的核心对象。负责帮助iOS系统和其他对象之间的交互

列表列举一下每个对象

core_objects_2x.png

主运行循环

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

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

event_draw_cycle_a_2x.png

应用的执行状态

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

应用的状态包括:

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

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

应用结束

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

上一篇 下一篇

猜你喜欢

热点阅读