整理ViewController的生命周期和加载过程

按照执行顺序排列

- initWithCoder:通过nib文件初始化时触发

- awakeFromNib:nib文件被加载的时候,会发送一个awakeFromNib的消息到nib文件中的每个对象

ps:

从Storyboards中加载的时候,会调用initWithCode,如果不存在则调用init。之后对里面的每个对象调用awakeFromNib方法。
从内存中alloc出来的情况下,调init方法。

- loadView:开始加载视图控制器自带的view 来生成UIViewController.view

- viewDidLoad:视图控制器的view被加载完成

PS:ViewController查找与其关联的view,其顺序是:

1 子类是否重写了loadView,是则直接调用。然后viewDidLoad完成View的加载。

2 如果子类没有重写的loadView,则ViewController会从StroyBoards中找或者调用其默认的loadView,默认的loadView返回一个空白的UIView对象
2 外部通过调用initWithNibName:bundle 指定nib文件名,ViewController加载此nib来创建View。
3 若外部initWithNibName:bundle 的name参数为nil即未指定nib文件名,

则ViewController会通过以下两个步骤找到与其关联的nib:

a): 如果类名包含Controller,例如ViewController的类名是MyViewController,则查找是否存在MyView.nib
b): 找跟ViewController类名一样的文件,例如MyViewController,则查找是否存在MyViewController.nib

4  如果子类没有重写的loadView,则ViewController会从StroyBoards中找或者调用其默认的loadView,默认的loadView返回一个空白的UIView对象
注:第一步,ViewController是判断子类是否重写了loadView,而不是判断调用子类的loadView之后ViewController的View是否为空。就是说,如果子类重写了loadView的话,不管子类在loadView里面能否获取到View,ViewController都会直接调viewDidLoad完成View的加载

- viewWillAppear:视图控制器的view将要显示在window上

- updateViewConstraints:视图控制器的view开始更新AutoLayout约束

- viewWillLayoutSubviews:视图控制器的view将要更新内容视图的位置

- viewDidLayoutSubviews:视图控制器的view已经更新视图的位置

- viewDidAppear:视图控制器的view已经展现到window上

- viewWillDisappear:视图控制器的view将要从window上消失

- viewDidDisappear:视图控制器的view已经从window上消失

- (void)viewWillUnload;

- (void)viewDidUnload;

PS:view的Load和Unload不是成对调用的。

因为viewWillUnload和viewDidUnload这两个函数只在内存警告时被调用。
就算强制将viewController的view设为nil也不会触发。
如果viewController从创建到销毁期间都没有内存警告,那么这两个函数将始终不会被调用。
iOS6已将viewWillUnload和viewDidUnload废弃,原因是UIKit在内存警告的时候已经不会自动释放无用的视图。

- (void)dealloc;

时间: 2024-10-24 09:59:09

整理ViewController的生命周期和加载过程的相关文章

iOS view和viewController的生命周期

转自:http://blog.sina.com.cn/s/blog_801997310101a39w.html 一.ViewController的职责 对内管理与之关联的View,对外跟其他ViewController通信和协调.对于与之关联的View,ViewController总是在需要的时候才加载视图,并在不需要的时候卸载视图,所以也同时担当了管理应用资源的责任 二.ViewController的生命周期 View是指Controller的View.它作为Controler的属性,生命周期

ViewController的生命周期分析和使用

ViewController的生命周期分析和使用 一.结构 按结构可以对iOS的所有ViewController分成两类: 1.主要用于展示内容的ViewController,这种ViewController主要用于为用户展示内容,并与用户交互,如UITableViewController,UIViewController. 2.用于控制和显示其他ViewController的ViewController.这种ViewController一般都是一个ViewController的容器.如UINa

[转]ViewController的生命周期

loadView 创建view,构建界面: viewDidLoad 做些初始化工作.由于在初次创建viewcontroller和重新恢复时都会调用,因此这个函数需要注意区分不同的情况,设置正确的状态. didReceiveMemoryWarning 释放不必须的内存,比如缓存,未显示的view等. viewDidUnLoad 最大程度的释放可以释放的内存.比如应该释放view,这些view在调用loadview后可以重新生成.(其中成员变量释放后应设置为nil).对于非界面的数据是否释放,需要具

View和viewController的生命周期

一.ViewController的职责 对内管理与之关联的View,对外跟其他ViewController通信和协调.对于与之关联的View,ViewController总是在需要的时候才加载视图,并在不需要的时候卸载视图,所以也同时担当了管理应用资源的责任 二.ViewController的生命周期 View是指Controller的View.它作为Controler的属性,生命周期在Controller的生命周期内.就是说你的Controller不能在view释放前就释放了. viewCon

0517.View、ViewController的生命周期及相关函数的用途[UIKit]

准备知识(来自网易博友:烟花细雨): 1.按照结构可以把ViewController分为2类: 1)主要是用于显示内容的ViewController,这种ViewController主要是用于为用户展示内容,并且与用户交互,比如UITableViewCOntroller,UIVewController 2)永固控制和显示其他ViewController的ViewController,这种ViewController一般都是一个ViewCOntroller的容器.比如UINavigationCon

viewdidload的调用和viewcontroller的生命周期

1.通常理解为在页面加载之前调用viewDidload,这是不准确的 2.它真正的调用时间是在‘ 第一次’用getter取self.view的时候就去判断是否有值了 3.如果没有会去loadview并且去创建一个对象并设置给self.veiw这时候就会执行了viewDidload, 4.所以有时看似逻辑正确的程序可能会出错或者说一些动作会因为不调用viewDidload而不执行 5.所以在页面跳转之前的函数的前面要注意是否调用getter   简单说就是给self.view赋值 如果有就可能马上

viewController的生命周期

ViewController是iOS开发中MVC模式中的C,ViewController是view的controller,ViewController的职责主要包括管理内部各个view的加载显示和卸载,同时负责与其他ViewController的通信和协调.在IOS中,有两类ViewController,一类是显示内容的,比如UIViewController.UITableViewController等,同时还可以自定义继承自UIViewController的ViewController:另一类

iOS开发-ViewController的生命周期和切换

ViewController在App开发中是至关重要的一环,无论是页面的展示和数据之间的交互,ViewController提供了一个框架可以管理和构建App应用.iOS中构建App提供了两种方式一种是ViewController管理比如NavigationController和UITabBarController,另外一种就是我们经常打交道用到的自定义ViewController或者是常用UITableViewController展示我们需要的数据.下面这种苹果官网的图片可以加强理解: 生命周期

[zhang] ViewController的生命周期分析和使用

iOS的SDK中提供很多原生ViewController,大大提高了我们的开发效率,下面是我的一些经验. 一.结构 按结构可以对iOS的所有ViewController分成两类:1.主要用于展示内容的ViewController,这种ViewController主要用于为用户展示内容,并与用户交互,如UITableViewController,UIViewController.2.用于控制和显示其他ViewController的ViewController.这种ViewController一般都