【iOS】ViewController的生命周期

本文详细介绍了iOS中UIViewController的生命周期,包括初始化、加载视图、销毁视图的各个阶段,以及相应的注意事项和代码示例。理解这些生命周期对于有效管理视图控制器的资源和状态至关重要。在内存紧张时,系统可能会调用viewDidUnload,释放非关键视图资源。在实际开发中,应避免viewDidLoad被多次调用,确保视图控制器的正确加载和释放。
摘要由CSDN通过智能技术生成

前言

在iOS开发中,UIViewController扮演者非常重要的角色,它是视图view和数据model的桥梁,通过UIViewController的管理有条不紊的将数据展示在视图上。作为UIKit中最基本的一个类,一般复杂的项目都离不开UIViewController作为基类。所以了解UIViewController的整个生命周期是有必要的。

生命周期

ViewController生命周期会经历初始化、加载视图、销毁视图、生命结束等过程。

请添加图片描述

初始化

init方法:

初始化ViewController本身。init里不要出现创建view的代码;在init里应该只有相关数据的初始化,而且这些数据都是比较关键的数据;init里不要调self.view,否则会导致ViewController创建view。(因为view是lazyinit的)

加载视图

loadView方法:

当view需要被展示而它却是nil时,viewController会调用该方法。

  • loadView中只初始化view;一般用于创建比较关键的view如tableViewControllertableViewUINavigationControllernavgationBar,不可调用view的getter (在调用super 的loadView前),最好也不要初始化一些非关键的view。如果你是从nib文件中创建的viewController在这里一定要首先调用 super的loadView方法,但建议不要重载这个方法。

viewDidLoad方法:

执行完loadView后继续执行viewDidLoadloadView时还没有view,而viewDidLoad时view已经创建好了

  • viewDidLoad 这时候view已经有了,最适合创建一些附加的view和控件了,有一点需要注意的是,viewDidLoad可能会调用多次(viewController可能多次载入view)

viewWillAppear方法:

UIViewController对象的视图即将加入窗口时调用

  • 这个一般在view被添加到superview之前;切换动画之前调用,在这里可以进行一些显示前的处理,比如键盘弹出,一些特殊的过程动画;

viewDidApper方法:

UIViewController对象的视图已经加入到窗口时调用

viewWillDisappear方法:

UIViewController对象的视图即将消失、被覆盖或是隐藏时调用;

viewDidDisappear方法:

UIViewController对象的视图已经消失、被覆盖或是隐藏时调用;

viewDidUnload方法:

这时候viewController的view已经是nil了,由于这一般发生在内存警告时,所以在这里你应该将那些不在显示的view释放了。比如你在 viewcontroller的view上加了一个label,而且这个label是viewcontroller的属性,那么你要把这个属性设置成 nil,以免占用不必要的内存,而这个label在viewDidLoad时会重新创建。

在该方法中将所有IBOutl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值