View Controller 生命周期的各个方法的用法
(void)awakeFromNib;
这个方法用的时候,outlet还没有连接起来,是view Controller刚从storyboard建的时候,没有完全建好,不过可能有一些事情要在这个方法里面完成,比如splitViewDelegate,需要在非常早期完成。 - (void)viewDidLoad;
用这个的时候,ViewController已经完全好了,outlet也已经连接好了。但是还没有在屏幕上显示出来。
这个方法里面可以放很多设置的代码。
这个方法执行的时候,view的bounds还没有。先load,再appear嘛。哈 - (void)viewWillAppear:(BOOL)animated;
这个方法调用的时候,bounds已经有了。
你的视图只会loaded一次,但是会appear或者disappear很多次。所以不变的东西,放在viewDidLoad里面。和几何相关的,放在viewWillAppear里面。这点对项目的优化很重要的哦。。。哈哈
就好似顶层的view,旋转ipad什么的都需要改变顶层的view的大小,当一个view controller的生命周期到这里的时候,就可以在这里的最后时刻来调整view的排列或者几何特性。
这里也设置做一些lazy execution for performance.比如:需要按一个button,出现一个view什么的。
这里设置,开销很大。耗时很长的事情最好在viewWillAppear里另开一个线程运行,然后在view里面放一个小小的spinning wheel。 - (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[self rememberScrollPosition];
[self saveDataToPermanentStore];
}
这个方法当然是要消失的时候啦。要消失的时候,还是记得现在的运行情况的。所以可以记得scroll的position啦。但是,不要在这个方法里面写太多的东西哦,app会崩溃的。
另开线程来处理任何UI的改变,或者如果是不怎么废资源的话就直接写入硬盘。 - (void)viewDidAppear:(BOOL)animated;
- (void)viewDidDisappear:(BOOL)animated; will的did版本。
在view显示之后使用。 - (void)viewWillLayoutSubviews; did版本:- (void)viewDidLayoutSubviews;
在由frame的改变而触发输出subview之前,这个方法被调用
比如,在autorotation后,布局发生改变,此时可以设置subview的布局。 关于ratation的更多方法:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)anOrientation duration:(NSTimeInterval)seconds;
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOriention)orient duration:(NSTimeInterval)seconds;
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)anOrientation;
@property UIInterfaceOrientation interfaceOrientation; 生命周期里一个低内存的情况:
- (void)viewDidUnload
{
self.faceView = nil;
}
低内存的时候,系统会卸载你的view,将会把你的controller的view从内存中清除出去,也就是停止所有有strong指向的指针。
但是对应的viewController是不会从heap清除出去的。
但是,还是要把其他的outlet指针都设置为nil,因为,就怕其他的view有指向这个类型的strong指针,所以就不太一样了。所以要养成好习惯,把outlet型的指针设置为nil。
View Controller 生命周期的各个方法的用法的更多相关文章
- 创建控制器的方法、控制器加载view过程、控制器view的生命周期、多控制器组合
在介绍四大对象的那篇博客中,可以基本了解到程序启动的过程: main-->UIApplicationMain-->创建UIApplication的实例和app代理AppDelegate的实 ...
- iOS开发——UI进阶篇(十)导航控制器、微博详情页、控制器的View的生命周期
一.导航控制器出栈 1.initWithRootViewController本质 UIViewController *vc = [[OneViewController alloc] init]; // ...
- iOS对UIViewController生命周期和属性方法的解析
目录[-] iOS对UIViewController生命周期和属性方法的解析 一.引言 二.UIViewController的生命周期 三.从storyBoard加载UIViewController实 ...
- 【iOS开发】iOS对UIViewController生命周期和属性方法的解析
iOS对UIViewController生命周期和属性方法的解析 一.引言 作为MVC设计模式中的C,Controller一直扮演着项目开发中最重要的角色,它是视图和数据的桥梁,通过它的管理,将数据有 ...
- View的生命周期
当一个进入一个新viewController的时候,viewController的view的生命周期一般是这样的: 1.先判断内存是否有这个View a.没有的话:生命周期为loadView-> ...
- 在ViewController中View的生命周期
view的生命周期如下(按顺序) -(void)loadView 用代码初始化的时候,第一个调用该方法.可以在这里面addSubView. -(void)viewDidLoad 初始化时一些数据的设置 ...
- Android View的生命周期
View生命周期相关方法 View是什么?官方源码注释中的定义:这个类是用户接口的基础构件.View表示屏幕上的一块矩形区域,负责绘制这个区域和事件处理. View是所有widget类的基类,Widg ...
- Android开发——View的生命周期总结
0.前言 今天看到一个概念是View的生命周期,有点懵逼,听说过Activity的生命周期,Fragment的生命周期,对View的生命周期好像没什么概念啊.难道layout.draw这些也算是生命周 ...
- iOS:捋一遍View的生命周期
一.介绍 前面介绍了VC的生命周期,闲着没事也来捋一捋View的生命周期,简单用两个类型的View来监测.一个View纯代码创建,另一个View使用Xib创建. 二 .代码 MyCodeView: ...
随机推荐
- Xcode换版本或者改名字后无法使用simpholders2
修改一下路径,在终端下输入下面的命令sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer 敲回车后 ...
- Asp.net 主题
设定主题: 右击网站,选择添加ASP.NET文件夹,选择主题.系统默认将文件夹命名为App_Themes,我们在这个文件夹下添加外观文件,在.skin后缀的文件中自定义我们想要的主题. 例如: < ...
- 你好,C++(36)人参再好,也不能当饭吃!6.3 类是如何面向对象的
6.3 类是如何面向对象的 类作为C++与面向对象思想结合的产物,作为面向对象思想在C++中的载体,它的身上流淌着面向对象的血液.从类成员的构成到类之间的继承关系再到虚函数,到处都体现着面向对象封装 ...
- uvalive 5721 Activation (概率dp+方程)
题目链接:http://vjudge.net/problem/viewProblem.action?id=24999 主要思想就是解方程的思想. 二维dp应该很容易想到,就是当前位置加队伍长度. dp ...
- MPICH2在两台Ubuntu上安装(用mpd做进程管理)
本文在经过大量的实验终于不负众望成功的在两台Ubuntu 12.04上部署MPI的一个小型集群,MPICH2所用版本为mpich2-1.4.1,下载地址:http://www.mcs.anl.gov/ ...
- 第三方分页控件aspnetPager出现问题解决方法
问题描述: 今天在打开以前的项目使用vs2013打开后并且生成解决方案的时候发现报错了.经过检查发现是由于第三方分页控件aspnetPager在页面上不能引用到了. 解决方法: 1. 首先将AspNe ...
- Flowplayer-一款免费的WEB视频播放器 转 - helloweba.com
Flowplayer支持播放flv.swf等流媒体以及图片文件,能够非常流畅的播放视频文件,支持自定义配置和扩展. 1.加载flowplayer.js 在要播放视频的页面的head之间加入flowpl ...
- python运维开发之第十天
一.多进程 1.进程模块 multiprocessing 简单的创建一个进程 #!/usr/bin/env python # -*- coding: utf- -*- # @Author : Will ...
- HTML&CSS基础学习笔记1.29-灵活地使用样式
灵活的使用样式 使用样式的感觉很棒吧! 刚我们使用的内联样式是给具体的标签加上样式,如果有多个标签的时候,我们用内联样式给标签加样式的时候就需要一个个的加过来,这样就很麻烦. 而如果我们使用内部样式表 ...
- python中的builtin函数详解-第二篇
classmethod(function) 这里不过多说明这个builtin方法的具体用法,python的文档和help函数已经给了这个方法充足的使用说明,所以我这里要说的时关于 classmetho ...