简单介绍关于IOS的生命周期过程
初步了解一下生命周期的过程:
1.通过alloc init 分配内存,初始化controller.
2.loadView
loadView方法默认实现[super loadView]
如果在初始化controller时指定了xib文件名,就会根据传入的xib文件名加载对应的xib文件,如果没传xib文件名,默认会加载跟controller同名的xib文件,如果没找到相关联的xib文件,就会创建一个空白的UIView,然后赋給controller的view
3.viewDidLoad
当loadView创建完view之后,此时view已经完成加载了,会调用viewDidLoad方法;一般我会在这里做界面上的初始化操作,比如添加按钮,子视图,等等.
4.viewWillAppear
当view在load完之后,将要显示在屏幕之前会调用这个方法
在重写这些方法时候最好先调用一下系统的方法之后在做操作。
5.viewDidAppear
当view已经在屏幕上显示出来之后,会调用这个方法
当一个视图被移除屏幕并且销毁的时候
6.viewWillDisappear
当视图将要从屏幕上移除时候调用
7.viewDidDisappear
当视图已经从屏幕上移除时候调用
8.dealloc
view被销毁时候调用,如果是手动管理内存的话,需要释放掉之前在init和viewDidLoad中分配的内存(类似alloc,new,copy);dealloc方法不能由我们主动调用,必须等引用计数为0时候由系统调用.
注意:viewDidUnload 在6.0之后已经废弃了。简单来说,对于iOS6,你不需要做任何以前viewDidUnload的事情,更不需要把以前viewDidUnload的代码移动到 didReceiveMemoryWarning方法中
二:生命周期图片展示

三;代码示例
首先创建一个UIVIewControl,这页面包含一个button 可以实现跳转到下一个页面;然后查看它的生命周期执行顺序;
- (void)loadView {
[super loadView];
NSLog(@"%@------%s",[self class], __FUNCTION__);
} - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSLog(@"%@------%s",[self class], __FUNCTION__);
self.view.backgroundColor = [UIColor redColor];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(barClick:)];
} - (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSLog(@"%@------%s",[self class], __FUNCTION__);
} - (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSLog(@"%@------%s",[self class], __FUNCTION__);
} - (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
NSLog(@"%@------%s",[self class], __FUNCTION__);
} - (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
NSLog(@"%@------%s",[self class], __FUNCTION__);
} #pragma mark - buttonClick
- (void)barClick:(UIBarButtonItem *)button {
FirstViewController *VC = [[FirstViewController alloc] init];
[self.navigationController pushViewController:VC animated:YES];
}
然后另外建一个视图 :VIewController,
- (void)loadView {
[super loadView];
NSLog(@"%@------%s",[self class], __FUNCTION__);
} - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSLog(@"%@------%s",[self class], __FUNCTION__);
self.view.backgroundColor = [UIColor greenColor]; } // 视图将要出现时就会调用
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSLog(@"%@------%s",[self class], __FUNCTION__);
}
// 视图完全出现时就会调用
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSLog(@"%@------%s",[self class], __FUNCTION__);
}
// 视图将要消失会调用
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
NSLog(@"%@------%s",[self class], __FUNCTION__);
}
// 视图完全消失会调用
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
NSLog(@"%@------%s",[self class], __FUNCTION__);
}
在ViewController页面中有一个button 点击button可以转到到FirstViewController 由程序运行结果可知: 当刚运行程序时按顺序依次执行:

1. loadView
2. viewDidLoad
3. viewWillAppear
4. viewDidAppear
5. viewWillDisappear
6. FirstViewController loadView
7. FirstViewController viewDidLoad
8. FirstViewController viewWillAppear
9. viewController viewDidDisappear
10. FirstViewController viewDidappear

当再一次点击左上角的返回键时 从FirstViewController跳转到viewController 由程序的运行结果可知 程序的运行顺序为;

1. loadView
2. viewDidLoad
3. viewWillAppear
4. viewDidAppear
5. viewWillDisappear
6. FirstViewController loadView
7. FirstViewController viewDidLoad
8. FirstViewController viewWillAppear
9. viewController viewDidDisappear
10. FirstViewController viewDidappear
11. FirstViewController viewWillDisappear
12. viewController viewWillAppear
13. FirstViewController viewWillDisappear
14. viewController viewDidAppear

从程序的执行顺序可以看出来每个viewController只执行一次loadView和viewDidLoad
简单介绍关于IOS的生命周期过程的更多相关文章
- iOS界面生命周期过程具体解释
开发过Android的人都知道,每个Android界面就是一个Activity,而每个Activity都会有自己的生命周期, 有一系列方法会控制Activity的生命周期.如:onCreate(),o ...
- (转)深入浅出 iOS 之生命周期
原文:http://www.cocoachina.com/applenews/devnews/2011/0817/3129.html 深入浅出 iOS 之生命周期 发布于:2011-08-17 10: ...
- 介绍maven构建的生命周期
介绍maven构建的生命周期 这篇是 https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html 的 ...
- 【转】深入浅出 iOS 之生命周期
[iOS]深入浅出 iOS 之生命周期 深入浅出 iOS 之生命周期 http://blog.csdn.net/kesalin/article/details/6691766 罗朝辉(http:// ...
- 图解ios程序生命周期
图解ios程序生命周期 应用程序启动后状态有Active.Inactive.Background.Suspended.Not running这5种状态,几种状态的转换见下图: 在AppDelegate ...
- iOS应用生命周期
作为应用程序的委托对象,AppDelegate类在应用生命周期的不同阶段会回调不同的方法.首先,让我们先了解一下iOS 应用的不同状态及它们彼此间的关系,见图1 . 图1 iOS应用状态图 下面简要介 ...
- iOS视图生命周期
视图是应用的一个重要组成部分,功能的实现与其息息相关,而视图控制器控制着视图,其重要性在整个应用中不言而喻. 1.视图生命周期与视图控制器关系 以视图的4 种状态为基础,我们来系统了解一下视图控制器的 ...
- iOS的生命周期
iOS应用程序一般都是由自己编写的代码和系统框架组成.系统框架提供了一些基本的infrastructure给APP来运行,而开发者则自己编写代码定制APP的外观和行为,了解iOS infrastruc ...
- iOS ViewController生命周期
ViewController是view的controller,viewController的职责主要包括管理内部各个view的加载显示与卸载,同时负责与其他ViewController的通信和协调. ...
随机推荐
- PetaPoco 快速上手
今天来给大家分享一个好用的轻型的.net框架的ORM——PetaPoco 本着快速上手的原则,我们通过和EF对比,让大家能快速使用PetaPoco PetaPoco大家可能没有听说过,但大家一定听说过 ...
- CSS3形变——transform与transform-origin画时钟
css3属性transform和transform-origin"画"时钟 效果图 前言 八哥:哈喽,大家好!好攻城狮就是我就是你们的小八,欢迎收听你的月亮...哦不,是很高兴与你 ...
- .Net程序员学用Oracle系列(22):分析函数(OVER)
1.函数语法 1.1.语法概述 1.2.窗口详解 1.2.1.ROWS 窗口 1.2.2.RANGE 窗口 2.函数用法 2.1.普通统计类函数 2.2.数据排序类函数 2.3.数据分布类函数 2.4 ...
- tomcat文件夹没有部署项目和Tomcat中webapps中没有运行项目-上传下载文件和图片
1.eclipse不像MyEclipse默认将项目部署到tomcat安装目录下的webapps中,而默认部署到工作目录下的.metadata.plugins\org.eclipse.wst.serve ...
- android国际化
语言的国际化 为了提供不同语言的版本,只需要在res中新建几个values文件夹就行 不过文件夹有自己的命名规则 values-语言代码-r国家或者地区的代码 然后我们只需要将不同语言的string. ...
- 元素类型为 "package" 的内容必须匹配 "(result-types?,interceptors?,default-interceptor-ref?
该错误为struts.xml内配置文件节点顺序错误. package内的元素节点必须按照以下顺序排放: result-types interceptors defau ...
- Java中Comparable和Comparator你知多少?
前言: 我喜欢这种遨游在Java的世界里,精心研究学习新鲜事物的感觉,即便再小再细再微不足道的东西,也让我乐此不疲,同时我也更愿意将我所会的东西分享出来供大家学习以及方便自己日后回顾.好了,闲话不多说 ...
- restful restAPI 的定义方式
今天听了一些rest 的讲解,感谢玖遥老大教导,晚上把整理出来,帮助那些和我一样有过迷茫的人! 我举的例子是经过我的老大讲解,以及观看阮一峰的restful架构的一些整合,和自己的拙劣见解. 首先:每 ...
- java实现8种排序算法(详细)
八种排序分别是:直接插入排序.希尔排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序. 希尔排序在时间性能上优于直接插入排序,但希尔排序是一种不稳定排序. 快速排序的时间性能也优于冒泡 ...
- Unity 3D Framework Designing(9)——构建统一的 Repository
谈到 『Repository』 仓储模式,第一映像就是封装了对数据的访问和持久化.Repository 模式的理念核心是定义了一个规范,即接口『Interface』,在这个规范里面定义了访问以及持久化 ...