iOS中视图是一个应用的重要组成部分,功能的实现与其息息相关,而视图控制器控制着视图,其重要性在整个应用中不言而喻。

 
视图生命周期与视图控制器关系
 
以视图的5种状态为基础,我们来系统的了解一下视图控制器的生命周期。在视图不同的生命周期,视图控制器会回调不同的方法。
viewDidLoad方法:视图控制器已被实例化,在视图被加载到内存中的时候调用该方法,这个时候视图并未出现。在该方法中通常进行的是对所控制的视图进行初始化处理。
 
视图可见前后会调用viewWillAppear:方法和viewDidAppear:方法;视图不可见前后会调用viewWillDisappear:方法和viewDidDisappear:方法。 4个方法调用父类相应的方法以实现其功能, 编码时该方法的位置可根据实际情况做以调整,参见如下代码:
 
[cpp] 
-(void)viewWillAppear:(BOOL)animated  
  
{  
  
[super viewWillAppear:YES];  
  
… …  
  
}  
 
-(void)viewWillAppear:(BOOL)animated
 
{
 
[super viewWillAppear:YES];
 
… …
 
}
 
 
viewDidLoad方法在应用运行的时候只调用一次,而这上述4个方法可以被反复调用多次,它们的使用很广泛但同时也具有很强的技巧性。例如:有的应 用会使用重力加速计,重力加速计会不断轮询设备以实时获得设备在z轴、x轴和y轴方向的重力加速度。不断的轮询必然会耗费大量电能进而影响电池使用寿命, 我们通过利用这4个方法适时地打开或者关闭重力加速计来达到节约电能的目的。怎么使用这4个方法才能做到“适时”是一个值得思考的问题。
 
iOS系统在低内存时情况下会调用didReceiveMemoryWarning:和viewDidUnload:方法。iOS6之后就不再使用 viewDidUnload:,而仅支持didReceiveMemoryWarning:。didReceiveMemoryWarning:方法的主 要职能是释放内存,包括视图控制器中的一些成员变量和视图的释放。现举例如下:
 
[cpp] 
- (void)didReceiveMemoryWarning {  
  
self.button = nil;  
self.myStringD = nil;  
[myStringC release];  
  
[super didReceiveMemoryWarning];  
}  
 
- (void)didReceiveMemoryWarning {
 
self.button = nil;
self.myStringD = nil;
[myStringC release];
 
[super didReceiveMemoryWarning];
}

iOS视图生命周期与视图控制器关系的更多相关文章

  1. iOS视图生命周期

    视图是应用的一个重要组成部分,功能的实现与其息息相关,而视图控制器控制着视图,其重要性在整个应用中不言而喻. 1.视图生命周期与视图控制器关系 以视图的4 种状态为基础,我们来系统了解一下视图控制器的 ...

  2. iOS系列 基础篇 04 探究视图生命周期

    iOS系列 基础篇 04 探究视图生命周期 视图是应用的一个重要的组成部份,功能的实现与其息息相关,而视图控制器控制着视图,其重要性在整个应用中不言而喻. 以视图的四种状态为基础,我们来系统了解一下视 ...

  3. 创建控制器的方法、控制器加载view过程、控制器view的生命周期、多控制器组合

    在介绍四大对象的那篇博客中,可以基本了解到程序启动的过程: main-->UIApplicationMain-->创建UIApplication的实例和app代理AppDelegate的实 ...

  4. 图解ios程序生命周期

    图解ios程序生命周期 应用程序启动后状态有Active.Inactive.Background.Suspended.Not running这5种状态,几种状态的转换见下图: 在AppDelegate ...

  5. (转)深入浅出 iOS 之生命周期

    原文:http://www.cocoachina.com/applenews/devnews/2011/0817/3129.html 深入浅出 iOS 之生命周期 发布于:2011-08-17 10: ...

  6. 【转】深入浅出 iOS 之生命周期

    [iOS]深入浅出 iOS 之生命周期 深入浅出 iOS 之生命周期  http://blog.csdn.net/kesalin/article/details/6691766 罗朝辉(http:// ...

  7. iOS开发:视图生命周期

    iOS应用的视图状态分为以下几种 在viewcontroller的父类UIViewController中可以看到如下代码,通过重写不同的方法对操作视图渲染. @available(iOS 2.0, * ...

  8. UIViewController的生命周期(根视图view从无到有的过程)

    UIViewController的生命周期实质上是指根视图view从无到有的过程 1.首先新建一个工程:不从mainstoryBoard加载 (删除入口) 在AppDelegate.m --> ...

  9. 【Xamarin 开发 IOS --IOS ViewController生命周期】

    ViewController ViewController是IOS开发中MVC模式中的C,ViewController是view的controller,ViewController的职责主要包括管理内 ...

随机推荐

  1. Caffe学习系列(9):运行caffe自带的两个简单例子

    为了程序的简洁,在caffe中是不带练习数据的,因此需要自己去下载.但在caffe根目录下的data文件夹里,作者已经为我们编写好了下载数据的脚本文件,我们只需要联网,运行这些脚本文件就行了. 注意: ...

  2. [CareerCup] 8.6 Jigsaw Puzzle 拼图游戏

    8.6 Implement a jigsaw puzzle. Design the data structures and explain an algorithm to solve the puzz ...

  3. Slider 滚动条 Pagination分页插件 JS Ajax 数据范围筛选 加载 翻页 笔记

    入职以后的第二个任务  根据用户所选的价格范围 筛选数据 修复BUG - 筛选数据后 总数没有更新.列表显示错误.翻页加载错误 用到的一些知识点 jquery插件系列之 - Slider滑块 max ...

  4. unity3d 依赖关系获取预制件任意资源

    前段时间策划们想知道UI预制件中使用了哪些音效 N多预制件.N多音效!! 如果纯人工整理的话这还不累成狗? 累成狗不说,还容易出错 所以获取音频剪辑小工具就诞生了,将策划从死亡边缘拉了回来 我们先看一 ...

  5. bcd 8421码

    bcd码表: 比如一个字符串 String s = "0200" 按对照表转换成二进制 02 : 0000 0010 00 : 0000 0000 s转换为字节的时候 02和00分 ...

  6. JAVA并发的性能调整

    1.互斥技术 synchronized Lock Atomic 性能比较Atomic >  Lock  > synchronized,当然这不是绝对的.当线程数比较少时,synchroni ...

  7. Java死锁的例子

    死锁 死锁是这样一种情形:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放.由于线程被无限期地阻塞,因此程序不可能正常终止. 导致死锁的根源在于不适当地运用“synchronized”关 ...

  8. easyUI icon中文命名图片无法在浏览器中访问处理方法

    本身的原因是Tomcat没有设置URIencoding,导致无法识别 在Tomcat 文件夹 conf 中 server.xml中加 URIEncoding="utf-8"  可以 ...

  9. 最短路算法floyd

    内容: 对n个点(n<=450),已知他们的边,也就是相邻关系,求任意两个点的最短距离. 代码: for(int k=1; k<=n; k++)//k写在外面 for(int i=1; i ...

  10. session共享

    Nginx或者Squit反向代理到两台tomcat服务器 tomcat使用memcached tomcat连接memcached工具 cp session/*.jar /usr/local/tomca ...