UIViewController的生命周期

转载 2013年12月03日 08:52:06

官方文档:Resource Management in View Controllers

UIViewController是IOS程序中的一个重要组成部分,扮演者一个大管家的身份,管理着程序中的众多视图:

何时加载view,加载的原则是什么,视图何时消失等问题,文档中讲的都很详细。

  Controller的view最好在需要显示时再去加载,并且在系统发出内存警告时释放不必要的view及相关的可再生的数据对象。

一、UIViewController的初始化

  初始化时会根据需要调用init,initWithCoder等相关函数,这个时候我们可以做一下简单的初始化操作,建立ViewController中需要使用的数据模型等,不建议在初始化阶段就直接创建view及其他与显示有关的对象(应该放到loadView的时候去创建,或者采用懒加载的方法创建)。

  我们都知道ViewController可以通过代码和xib两种方式创建,这两种方式的初始化流程也不尽相同。

  1)使用xib创建的VC

  xib其实最终是会把我们的设置保存成一个数据集(xml文件),当需要初始化构建VC的时候,回去读取记录的数据集,然后帮我们动态的创建VC,因此可以想象它在初始化时会先去找看是否实现initWithCoder方法,如果该类实现了该方法,就直接调用initWithCoder方法创建对象,如果没有实现的话就调用init方法。调用完初始化方法以后紧接着会调用awakeFromNib方法,在这个方法里面我们可以做进一步的初始化操作。

  2)使用代码创建VC

  使用代码创建时,我们根据需要手动的创建VC中的数据,如果自己定制VC时,还需要在init中调用[super init]

二、UIViewController中View的load和unload

  前面讲了不建议在VC初始化的时候就创建view及其他与显示相关的代码,官方文档建议将View的初始化操作放到loadView的时候再做,当VC接到内存告警时会调用didRecieveMemoryWarning这个时候我们就要做出响应,释放暂时不需要的对象。如果无视这个警告,系统内存不够用时会会继续发送,如果还得不到处理就会强制退出程序。下面看具体的loadView和unloadView时候都会做什么操作。

  1)Load周期

load cycle

  当需要显示或者访问view属性时,view没有创建的话,VC就会调用loadView方法,在这个时候会创建一个view并将其赋给VC.view属性。紧接着就会调用VC的viewDidLoad方法,这个时候VC.view保证是有值的,可以做进一步的初始化操作,例如添加一些subview。注意:定制VC时,如果覆盖loadView方法,不需要调用[super loadView]方法。

  2)Unload周期

  当app收到内存警告的时候,会调用每一个VC的didRecieveMemoryWarning方法,我们需要做出响应,释放程序中暂时不需要的资源。通常都会重写该方法,重写时候需要调用super的该方法。如果检测到当前VC的view可以被安全释放的话,就会调用viewWillUnload方法,这个我们必须要重视,因为当VC的view消失时候它的subviews可能会被一起释放,我们需要根据具体情况做一些记录,以保证下次能够正确创建,同时不出现内存泄漏。调用viewWillUnload以后,会将VC.view属性设置成nil,然后在调用viewDidUnload方法,这个时候我们可以释放那些强引用的对象。


相关文章推荐

UIViewController生命周期详解

  • 2015年12月20日 09:09
  • 125KB
  • 下载

oc UI UIViewController的生命周期及iOS程序执行顺序

当一个视图控制器被创建,并在屏幕上显示的时候。 代码的执行顺序 1、 alloc                                   创建对象,分配空间 2、init (initW...

20150702_UI之UIViewController的生命周期

// // SecondViewController.h // IOS150702_UI(03)_UIViewController生命周期 // // Created by PengJunlon...

iOS UIViewController和Android Activity的主要生命周期事件

将iOS UIViewController和Android Activity的主要生命周期事件放到一起比对,也还是有点意思的,一种天下武功出少林,形变神不变的感觉。...

view在UIViewController中的生命周期

理解view的生命周期: 在UIViewController中,view(黑体的view指的是controller的view属性)有两个循环:加载和卸载循环。当程序的一部分向controller...

iOS中UIViewController的生命周期以及viewDidLoad和viewWillAppear的注意事项

iOS中UIViewController的生命周期以及viewDidLoad和viewWillAppear的注意事项
  • l2i2j2
  • l2i2j2
  • 2016年04月14日 22:55
  • 1710

UIViewController的生命周期

官方文档:The View Controller Life Cycle UIViewController是IOS程序中的一个重要组成部分,扮演者一个大管家的身份,管理着程序中的众多视图: ...
  • likendsl
  • likendsl
  • 2012年06月04日 14:44
  • 10061

IOS:UIViewController的生命周期

UIViewController的生命周期 当一个视图控制器被创建,并在屏幕上显示的时候。 代码的执行顺序 1、 alloc                                  ...

UIViewController介绍:2-控制器的生命周期

1、控制器生命周期简介 所谓控制器的生命周期,通俗来讲,就是控制器的创建、视图的加载与显示,以及控制器的销毁等操作。 2、控制器生命周期的常用方法 在UIViewController类中,定义了...
  • cin_ie
  • cin_ie
  • 2016年07月17日 23:14
  • 221

IOS中UIViewController的生命周期

官方文档:The View Controller Life Cycle UIViewController是IOS程序中的一个重要组成部分,扮演者一个大管家的身份,管理着程序中的众多视...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UIViewController的生命周期
举报原因:
原因补充:

(最多只允许输入30个字)