iOS中应用和视图的生命周期
一. 应用的生命周期
在写前面
在iOS中,AppDelegate是应用程序的委托对象,它继承了UIResponder类,并实现了UIApplicationDelegate协议。UIResponder类可以使子类AppDelegate能够成为应用程序委托对象,这种对象能够响应应用程序的生命周期。在应用状态跃迁过程中,IOS系统会回调AppDelegate中的一些方法,并且发送一些通知。下面列出几个主要的方法和通知。</li>
阶段一
调用方法:application:didFinishLaunchingWithOptions:
发出通知:UIApplicationDidFinishLaunchingNotification,应用启动并进行初始化时会调用该方法并发出通知。这个阶段会实例化根视图控制器。
阶段二
调用方法:applicationDidBecomeActive:
发出通知:UIApplicationDidBecomeActiveNotification,应用进入前台并处于活动状态时调用该方法并发出通知。这个阶段可以恢复UI的状态。
阶段三
调用方法:applicationWillResignActive:
发出通知:UIApplicationWillResignActiveNotification,应用从活动状态进入到非活动状态时调用该方法并发出通知。这个阶段可以保存UI的状态。
阶段四
调用方法: - applicationDidEnterBackground:
发出通知:UIApplicationDidEnterBackgroundNotification,应用进入后台时调用该方法并发出通知。这个阶段可以保存用户数据,释放一些资源。
阶段五
调用方法: applicationWillEnterForeground:
发出通知:UIApplicationWillEnterForegroundNotification,应用进入前台,但是还没有处于活动状态时调用该方法并发出通知。这个阶段可以恢复用户数据。
阶段六
调用方法: applicationWillTerminate:
发出通知: UIApplicationWillTerminateNotification,应用被终止时调用该方法并发出通知,但内存清除时除外。这个阶段释放一些资源,也可以保存用户数据。
二. 视图的生命周期
在写前面
视图是应用的一个重要组成部分,功能的实现与其息息相关,而视图控制器控制着视图,其重要性在整个应用中不言而喻.
下面具体了解下视图生命周期与视图控制器的关系。以视图的四种状态(视图创建、视图可见、视图不可见、系统低内存)为基础,在视图不同的生命周期中,视图控制器会回调不同的方法,具体如下。
一. 视图创建
- 在视图控制器已被实例化,视图被加载到内存中时调用viewDidLoad方法,此时视图并未出现。在该方法中,通常进行的是对所控制的视图进行初始化处理。
二. 视图可见、视图不可见
-
视图可见前后会调用viewWillAppear:方法和viewDidAppear:方法;视图不可见前后会调用viewWillDisappear:方法和viewDidDisappear:方法。
注意:viewDidLoad方法在应用运行时只调用一次,而上述四个方法可以被反复调用。
三. 系统低内存
- 在低内存情况下,iOS会调用didReceiveMemoryWarning和viewDidUnload方法。在iOS6之后,就不再使用viewDidUnload,而仅支持didReceiveMemoryWarning。didReceiveMemoryWarning方法主要作用是释放内存,包括视图控制器中的一些成员变量和视图的释放。