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. [CareerCup] 1.3 Permutation String 字符串的排列

    1.3 Given two strings, write a method to decide if one is a permutation of the other. 这道题给定我们两个字符串,让 ...

  2. 20135220谈愈敏Blog7_可执行程序的装载

    可执行程序的装载 谈愈敏 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 一. ...

  3. 备份U盘分区表,未雨绸缪

    有时候,由于操作不当将U盘或者移动硬盘插入到电脑的时候会变成RAW格式,不可读取,这样的话就杯具了,只能用恢复软件试试看. 但是,如果一开始进行了备份的话,处理起来就简单多了. 用winhex打开U盘 ...

  4. Jenkins进阶系列之——13修改Jenkins权限控制

    说明:本方法适用于安全矩阵和项目矩阵授权策略的Jenkins. 很多童鞋在使用jenkins的时候忘记配置权限或者权限配置错误,然后各种蛋疼.最近闲着无事,折腾了下.好了,闲话少扯. Jenkins的 ...

  5. node 学习笔记 - fs 文件操作

    本文同步自我的个人博客:http://www.52cik.com/2015/12/03/learn-node-fs.html 最近看到群里不少大神都开始玩 node 了,我感觉跟他们步伐越来越大了, ...

  6. Android Studio之gradle的配置与介绍

    1.gradle的简单介绍 Gradle是可以用于Android开发的新一代的Build System,也是Android Studio默认的build工具.其实Gradle脚本是基于一种JVM语言- ...

  7. Unity Networking API文档翻译(一):Networking概述

    写在翻译前的话:      我使用过Photon,研究过Ulink这些Unity提供的多人在线游戏服务器组件,这些商业组件虽然很好很强大.但是对于一个独立开发者来说,4000多软妹币还是点多.总想找一 ...

  8. (旧)子数涵数·PS ——翻页效果

    一.首先在网络上下载一张图片,作为素材.这是我下载的素材,至于为什么选择这张照片呢,当然不是因为自己的一些羞羞的念头啦. 二.打开Photoshop,我使用的版本是CS3(因为CS3所占的磁盘空间较小 ...

  9. MongoDB查询并更新一粟

    //更新操作使用collection的Update方法,有泛型和非泛型两个版本: //其签名如下(列出了两个简单并常用的的重载,还有几个): public virtual WriteConcernRe ...

  10. Visual Studio调试

    一:C# CODING 技巧 1:TODO 然后 CTRL + W + T,打开任务列表,选中 Comments,就会显示所有待做的任务 2:打开所在的文件夹 右键单击任何一个文件选项卡, 选择&qu ...