UIViewController的生命周期
来源:互联网 发布:淘口令进入淘宝没反应 编辑:程序博客网 时间:2024/05/05 04:02
一.UIViewController的作用
1.对内管理与之关联的view,对外跟其他ViewController通信和协调
loadView和viewDidLoad的一个区别:loadView时还没有view,而viewDidLoad时,view已经创建好了
2.ViewController对View的加载过程
1)先判断子类是否重写了loadView,如果有直接调用,之后调用viewDidLoad完成View的加载
2)如果子类没有重写loadView,是通过storyboard来加载的,storyboard的名字不为nil:
<span style="font-size:14px;">UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Test" bundle:nil];</span><span style="font-size:18px;"></span>则创建Storyboard中的View,再调用viewDidLoad完成View的加载
3)如果子类没有重写loadView,是通过nib来加载的,nib的名字不为nil:
<span style="font-size:14px;">ViewController *vc = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];</span><span style="font-size:18px;"></span>创建nib对应的XIB的view
4)如果子类没有重写loadView,是通过nib来加载的,nib的名字为nil
则viewController会通过以下两个步骤找到与其关联的nib:
A.如果类名包含Controller,例如ViewController的类名是MyViewController,则查找是否存在MyView.nib;
B.找跟ViewController类名一样的文件,例如MyViewController,则查找是否存在MyViewController.nib。
注意:
第一步viewcontroller是判断子类是否重写了loadView,如果子类重写了loadView,不管子类在loadView里面能否获取到view,viewController都会直接调用viewDidLoad完成view的加载。
二.view和ViewController的创建阶段
1.init
在init里应该只有相关数据的初始化,而且这些数据都是比较关键的数据。init里不要调self.view,否则会导致ViewController创建view,view是以懒加载的方式进行创建的
2.loadView
只初始化view,一般用于创建比较关键的view如tableViewController的tabView,不可掉用view的getter(在掉super loadView前),最好也不要初始化一些非关键的view。如果你是从nib文件中创建的viewController在这里一定要首先调用super的loadView方法,但建议不要重载这个方法。
3.viewDidLoad
这时候view已经有了。最适合创建一些附加的view和控件,有一点需要注意的是,viewDidLoad会调用多次(viewcontroller可能多次载入view
4.viewWillAppear
viewWillAppear 这个一般在view被添加到superview之前,切换动画之前调用。在这里可以进行一些显示前的处理。比如键盘弹出,一些特殊的过程动画(比如状态条和navigationbar颜色)。
5.viewDidAppear
一般用于显示后,在切换动画后,如果有需要的操作,可以在这里加入相关代码。
6.viewDidUnload
这时候viewController的view已经是nil了。由于这一般发生在内存警告时,所以在这里你应该将那些不在显示的view释放了。比如你在viewcontroller的view上加了一个label,而且这个label是viewcontroller的属性,那么你要把这个属性设置成nil,以免占用不必要的内存,而这个label在viewDidLoad时会重新创建。
7.dealloc
- UIViewController的生命周期
- UIViewController的生命周期
- UIViewController的生命周期
- UIViewController的生命周期
- UIViewController的生命周期
- IOS-UIViewController的生命周期
- UIViewController的生命周期图
- UIViewController的生命周期
- UIViewController的生命周期
- UIViewController的生命周期
- UIViewController的生命周期
- UIViewController的生命周期
- UIViewController的生命周期
- UIViewController的生命周期
- UIViewController的生命周期
- ios UIViewController的生命周期
- IOS-UIViewController的生命周期
- UIViewController的生命周期
- UINavigationBar Background Color
- SpannableString用法
- hdu 1014 Uniform Generator【模拟 && 欧几里得】
- 关于c中的for循环边界的设置
- ID,instancetype与__kindof
- UIViewController的生命周期
- 【Unix/Linux编程实践】用管道实现双向通信—以bc计算器为例
- android studio 快捷键大全
- 大型网站架构演化历程
- OC-051.NSNumber 基本数据的包装类
- 创业之路:(一)众筹
- 10008---CSS Background背景
- oracle的for循环实例
- MVC4 model 自定义验证笔记