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

1、控制器生命周期简介

所谓控制器的生命周期,通俗来讲,就是控制器的创建、视图的加载与显示,以及控制器的销毁等操作。

2、控制器生命周期的常用方法

在UIViewController类中,定义了完整的控制器生命周期的方法,在不同的时间点会调用不同的方法,常用的方法有:

 
 
  1. /*初始化方法*/
  2. - (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil;
  3. - (nullable instancetype)initWithCoder:(NSCoder *)aDecoder;
  4. /*视图显示方法*/
  5. - (void)loadView;
  6. - (void)viewDidLoad;
  7. - (void)viewWillAppear:(BOOL)animated;
  8. - (void)viewDidAppear:(BOOL)animated;
  9. - (void)viewWillDisappear:(BOOL)animated;
  10. - (void)viewDidDisappear:(BOOL)animated;
  11. - (void)viewWillLayoutSubviews NS_AVAILABLE_IOS(5_0);
  12. - (void)viewDidLayoutSubviews NS_AVAILABLE_IOS(5_0);
  13. /*销毁相关方法*/
  14. - (void)didReceiveMemoryWarning;

3、使用代码创建控制器时调用的方法列表

当使用代码创建控制器时,一般会使用init方法进行实例化。

通过日志,可以发现此时调用如下方法:

 
 
  1. 2015-12-24 17:55:04.025 LifeCycle[15457:3837664] -[AppDelegate application:didFinishLaunchingWithOptions:]
  2. 2015-12-24 17:55:04.026 LifeCycle[15457:3837664] -[ViewController init]
  3. 2015-12-24 17:55:04.029 LifeCycle[15457:3837664] -[ViewController loadView]
  4. 2015-12-24 17:55:04.031 LifeCycle[15457:3837664] -[ViewController viewDidLoad]
  5. 2015-12-24 17:55:04.031 LifeCycle[15457:3837664] -[ViewController myNibView]
  6. 2015-12-24 17:55:04.035 LifeCycle[15457:3837664] -[ViewController viewWillAppear:]
  7. 2015-12-24 17:55:04.038 LifeCycle[15457:3837664] -[AppDelegate applicationDidBecomeActive:]
  8. 2015-12-24 17:55:04.040 LifeCycle[15457:3837664] -[ViewController viewWillLayoutSubviews]
  9. 2015-12-24 17:55:04.049 LifeCycle[15457:3837664] -[ViewController viewDidLayoutSubviews]
  10. 2015-12-24 17:55:04.051 LifeCycle[15457:3837664] -[ViewController viewWillLayoutSubviews]
  11. 2015-12-24 17:55:04.095 LifeCycle[15457:3837664] -[ViewController viewDidLayoutSubviews]
  12. 2015-12-24 17:55:04.100 LifeCycle[15457:3837664] -[ViewController viewDidAppear:]

4、使用xib创建控制器时调用的方法列表

当使用xib创建控制器时,一般会使用initWithNibName:方法进行实例化。

通过日志,可以发现此时调用如下方法:

 
 
  1. 2015-12-24 17:56:18.232 LifeCycle[15470:3839342] -[AppDelegate application:didFinishLaunchingWithOptions:]
  2. 2015-12-24 17:56:18.232 LifeCycle[15470:3839342] -[XibViewController initWithNibName:bundle:]
  3. 2015-12-24 17:56:18.235 LifeCycle[15470:3839342] -[XibViewController loadView]
  4. 2015-12-24 17:56:18.235 LifeCycle[15470:3839342] -[XibViewController viewDidLoad]
  5. 2015-12-24 17:56:18.236 LifeCycle[15470:3839342] -[XibViewController myNibView]
  6. 2015-12-24 17:56:18.239 LifeCycle[15470:3839342] -[XibViewController viewWillAppear:]
  7. 2015-12-24 17:56:18.241 LifeCycle[15470:3839342] -[AppDelegate applicationDidBecomeActive:]
  8. 2015-12-24 17:56:18.243 LifeCycle[15470:3839342] -[XibViewController viewWillLayoutSubviews]
  9. 2015-12-24 17:56:18.251 LifeCycle[15470:3839342] -[XibViewController viewDidLayoutSubviews]
  10. 2015-12-24 17:56:18.253 LifeCycle[15470:3839342] -[XibViewController viewWillLayoutSubviews]
  11. 2015-12-24 17:56:18.253 LifeCycle[15470:3839342] -[XibViewController viewDidLayoutSubviews]
  12. 2015-12-24 17:56:18.258 LifeCycle[15470:3839342] -[XibViewController viewDidAppear:]

5、使用故事版StroyBoard创建控制器时调用的方法列表

  • 当使用StroyBoard创建控制器时,程序在启动一开始,就会对StoryBoard文件进行读取,并且自动创建根控制器(即,带箭头的控制器),在创建过程中,会自动调用initWithCoder方法以及awakeFromNib方法。
  • 通过日志,我们还可以发现,实例化根控制器是在didFinishLaunchingWithOptions:这个方法之前就进行了。
 
 
  1. 2015-12-24 17:59:49.124 LifeCycle[15490:3842901] -[SBViewController1 initWithCoder:]
  2. 2015-12-24 17:59:49.127 LifeCycle[15490:3842901] -[SBViewController1 awakeFromNib]
  3. 2015-12-24 17:59:49.131 LifeCycle[15490:3842901] -[AppDelegate application:didFinishLaunchingWithOptions:]
  4. 2015-12-24 17:59:49.131 LifeCycle[15490:3842901] -[SBViewController1 loadView]
  5. 2015-12-24 17:59:49.134 LifeCycle[15490:3842901] -[SBViewController1 viewDidLoad]
  6. 2015-12-24 17:59:49.134 LifeCycle[15490:3842901] -[SBViewController1 viewWillAppear:]
  7. 2015-12-24 17:59:49.136 LifeCycle[15490:3842901] -[AppDelegate applicationDidBecomeActive:]
  8. 2015-12-24 17:59:49.139 LifeCycle[15490:3842901] -[SBViewController1 viewWillLayoutSubviews]
  9. 2015-12-24 17:59:49.140 LifeCycle[15490:3842901] -[SBViewController1 viewDidLayoutSubviews]
  10. 2015-12-24 17:59:49.143 LifeCycle[15490:3842901] -[SBViewController1 viewDidAppear:]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值