UIViewController介绍:2-控制器的生命周期
2016-07-17 23:14
405 查看
1、控制器生命周期简介
所谓控制器的生命周期,通俗来讲,就是控制器的创建、视图的加载与显示,以及控制器的销毁等操作。
2、控制器生命周期的常用方法
在UIViewController类中,定义了完整的控制器生命周期的方法,在不同的时间点会调用不同的方法,常用的方法有:/*初始化方法*/
- (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil;
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder;
/*视图显示方法*/
- (void)loadView;
- (void)viewDidLoad;
- (void)viewWillAppear:(BOOL)animated;
- (void)viewDidAppear:(BOOL)animated;
- (void)viewWillDisappear:(BOOL)animated;
- (void)viewDidDisappear:(BOOL)animated;
- (void)viewWillLayoutSubviews NS_AVAILABLE_IOS(5_0);
- (void)viewDidLayoutSubviews NS_AVAILABLE_IOS(5_0);
/*销毁相关方法*/
- (void)didReceiveMemoryWarning;
3、使用代码创建控制器时调用的方法列表
当使用代码创建控制器时,一般会使用init方法进行实例化。通过日志,可以发现此时调用如下方法:
2015-12-24 17:55:04.025 LifeCycle[15457:3837664] -[AppDelegate application:didFinishLaunchingWithOptions:]
2015-12-24 17:55:04.026 LifeCycle[15457:3837664] -[ViewController init]
2015-12-24 17:55:04.029 LifeCycle[15457:3837664] -[ViewController loadView]
2015-12-24 17:55:04.031 LifeCycle[15457:3837664] -[ViewController viewDidLoad]
2015-12-24 17:55:04.031 LifeCycle[15457:3837664] -[ViewController myNibView]
2015-12-24 17:55:04.035 LifeCycle[15457:3837664] -[ViewController viewWillAppear:]
2015-12-24 17:55:04.038 LifeCycle[15457:3837664] -[AppDelegate applicationDidBecomeActive:]
2015-12-24 17:55:04.040 LifeCycle[15457:3837664] -[ViewController viewWillLayoutSubviews]
2015-12-24 17:55:04.049 LifeCycle[15457:3837664] -[ViewController viewDidLayoutSubviews]
2015-12-24 17:55:04.051 LifeCycle[15457:3837664] -[ViewController viewWillLayoutSubviews]
2015-12-24 17:55:04.095 LifeCycle[15457:3837664] -[ViewController viewDidLayoutSubviews]
2015-12-24 17:55:04.100 LifeCycle[15457:3837664] -[ViewController viewDidAppear:]
4、使用xib创建控制器时调用的方法列表
当使用xib创建控制器时,一般会使用initWithNibName:方法进行实例化。通过日志,可以发现此时调用如下方法:
2015-12-24 17:56:18.232 LifeCycle[15470:3839342] -[AppDelegate application:didFinishLaunchingWithOptions:]
2015-12-24 17:56:18.232 LifeCycle[15470:3839342] -[XibViewController initWithNibName:bundle:]
2015-12-24 17:56:18.235 LifeCycle[15470:3839342] -[XibViewController loadView]
2015-12-24 17:56:18.235 LifeCycle[15470:3839342] -[XibViewController viewDidLoad]
2015-12-24 17:56:18.236 LifeCycle[15470:3839342] -[XibViewController myNibView]
2015-12-24 17:56:18.239 LifeCycle[15470:3839342] -[XibViewController viewWillAppear:]
2015-12-24 17:56:18.241 LifeCycle[15470:3839342] -[AppDelegate applicationDidBecomeActive:]
2015-12-24 17:56:18.243 LifeCycle[15470:3839342] -[XibViewController viewWillLayoutSubviews]
2015-12-24 17:56:18.251 LifeCycle[15470:3839342] -[XibViewController viewDidLayoutSubviews]
2015-12-24 17:56:18.253 LifeCycle[15470:3839342] -[XibViewController viewWillLayoutSubviews]
2015-12-24 17:56:18.253 LifeCycle[15470:3839342] -[XibViewController viewDidLayoutSubviews]
2015-12-24 17:56:18.258 LifeCycle[15470:3839342] -[XibViewController viewDidAppear:]
5、使用故事版StroyBoard创建控制器时调用的方法列表
当使用StroyBoard创建控制器时,程序在启动一开始,就会对StoryBoard文件进行读取,并且自动创建根控制器(即,带箭头的控制器),在创建过程中,会自动调用initWithCoder方法以及awakeFromNib方法。通过日志,我们还可以发现,实例化根控制器是在didFinishLaunchingWithOptions:这个方法之前就进行了。
2015-12-24 17:59:49.124 LifeCycle[15490:3842901] -[SBViewController1 initWithCoder:]
2015-12-24 17:59:49.127 LifeCycle[15490:3842901] -[SBViewController1 awakeFromNib]
2015-12-24 17:59:49.131 LifeCycle[15490:3842901] -[AppDelegate application:didFinishLaunchingWithOptions:]
2015-12-24 17:59:49.131 LifeCycle[15490:3842901] -[SBViewController1 loadView]
2015-12-24 17:59:49.134 LifeCycle[15490:3842901] -[SBViewController1 viewDidLoad]
2015-12-24 17:59:49.134 LifeCycle[15490:3842901] -[SBViewController1 viewWillAppear:]
2015-12-24 17:59:49.136 LifeCycle[15490:3842901] -[AppDelegate applicationDidBecomeActive:]
2015-12-24 17:59:49.139 LifeCycle[15490:3842901] -[SBViewController1 viewWillLayoutSubviews]
2015-12-24 17:59:49.140 LifeCycle[15490:3842901] -[SBViewController1 viewDidLayoutSubviews]
2015-12-24 17:59:49.143 LifeCycle[15490:3842901] -[SBViewController1 viewDidAppear:]
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用开发中AFNetworking库的常用HTTP操作方法小结
- iOS应用中UISearchDisplayController搜索效果的用法
- iOS App开发中的UISegmentedControl分段组件用法总结
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- iOS中UIAlertView警告框组件的使用教程
- 浅析iOS应用开发中线程间的通信与线程安全问题
- iOS中的UIKeyboard键盘视图使用方法小结
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法