当一个进入一个新viewController的时候,viewController的view的生命周期一般是这样的:

1.先判断内存是否有这个View

a.没有的话:生命周期为loadView->viewDidLoad->viewWillAppear->viewDidAppear->viewWillDisAppear->viewDidDisAppear

注:(1)loadView一半不需要重写,除非这个ViewController没有任何的nib与他关联,需要在loadView中创建view并赋给viewController的view

  (2)在viewDidAppear之后如果内存不足会直接进入didReceiveMemoryWarning->unloadView(现在该方法不允许重写),从内存中释放掉

b.有的话:生命周期为viewWillAppear->viewDidAppear->viewWillDisAppear->viewDidDisAppear

2.例如在UITabbarController和UINavigationController中(在不考虑内存警告的问题的情况下)

UITabbarController:切换页面时,只有第一次进入该页面的时候会从生命周期loadView开始,加载一次后就会在内存中,再次进入该页面的时候,就都是从viewWillAppear开始

UINavigationController:如果将A push进来,A是一个新页面内存中不存在所以从loadView开始,再push B进来,B也是同样的情况,将B pop出去,A已经存在于内存中所以直接从viewWillAppear开始,被pop的viewController已经从内存中释放,所以在进行push B操作还是从loadView开始。

View的生命周期的更多相关文章

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

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

  2. iOS开发——UI进阶篇(十)导航控制器、微博详情页、控制器的View的生命周期

    一.导航控制器出栈 1.initWithRootViewController本质 UIViewController *vc = [[OneViewController alloc] init]; // ...

  3. 在ViewController中View的生命周期

    view的生命周期如下(按顺序) -(void)loadView 用代码初始化的时候,第一个调用该方法.可以在这里面addSubView. -(void)viewDidLoad 初始化时一些数据的设置 ...

  4. Android View的生命周期

    View生命周期相关方法 View是什么?官方源码注释中的定义:这个类是用户接口的基础构件.View表示屏幕上的一块矩形区域,负责绘制这个区域和事件处理. View是所有widget类的基类,Widg ...

  5. Android开发——View的生命周期总结

    0.前言 今天看到一个概念是View的生命周期,有点懵逼,听说过Activity的生命周期,Fragment的生命周期,对View的生命周期好像没什么概念啊.难道layout.draw这些也算是生命周 ...

  6. iOS:捋一遍View的生命周期

    一.介绍 前面介绍了VC的生命周期,闲着没事也来捋一捋View的生命周期,简单用两个类型的View来监测.一个View纯代码创建,另一个View使用Xib创建. 二 .代码 MyCodeView:  ...

  7. View Controller 生命周期的各个方法的用法

    (void)awakeFromNib; 这个方法用的时候,outlet还没有连接起来,是view Controller刚从storyboard建的时候,没有完全建好,不过可能有一些事情要在这个方法里面 ...

  8. iOS:viewController 和 view 的生命周期、不错的代码设计风格

    一.介绍: viwe和viewController的生命周期是最基本的知识,如果很好地理解它们的方法调用的执行顺序,就能很好地设计代码的风格.这篇博客转载自:http://www.cnblogs.co ...

  9. Android自定义View探索—生命周期

    Activity代码: public class FiveActivity extends AppCompatActivity { private MyView myView; @Override p ...

随机推荐

  1. Inkpad绘图原理浅析

    本文新版本已转移到开源中国,欢迎前往指导. Inkpad是一款非常优秀的iPad矢量绘图软件,保管你一看见就忘不了.我的感觉是“一览众山小”.“相见甚晚”,以至于我写的TouchVG就是“小巫见大巫” ...

  2. NHibernate 使用CreateSQLQuery进行查询

    涉及的表:Cake{Id ,CakeName } CakeSize{ CakeId,-为外键,对应Cake表的字段Id Size } (其中ISession session = NHibernateH ...

  3. css的两种引用方式 link和@import

    学习web开发的最大乐趣就是不断的发现自己以前不曾见过的东西,这些东西对于我来说是那么的新鲜有趣. 比如说今天偶尔研究别人的网站,就发现了有趣的东东. 当点开此网页的css时(这个css文件命名方式就 ...

  4. LeetCode-Maximum Product of Word Lengths

    Description: Given a string array words, find the maximum value of length(word[i]) * length(word[j]) ...

  5. PEP8 Python 编码规范

    一 代码编排1 缩进.4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格.2 每行最大长度79,换行可以使用反斜杠,最好使用圆括号.换行点要在操作符的后边敲回车.3 类 ...

  6. [Logstash]使用详解

    Logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的.多样化的日志搜集起来,并进行自定义的处理,然后传输到指定的位置,比如某个服务器或者文件. 本文针对官方文档进行翻译以及实践,希望有更 ...

  7. [Tool] Fiddle2基本使用

    Fiddler2已经成网页调试必备的工具. 简述下快捷命令: ?url =statu.=method @host bpafter url bpv method start stop 参考的文章: Fi ...

  8. JS 的 call apply bind 方法

    js的call apply bind 方法都很常见,目的都是为了改变某个方法的执行环境(context) call call([thisObj[,arg1[, arg2[,   [,.argN]]]] ...

  9. 利用IronJs在.NET程序里面跑javascript脚本

    what’s dlr The dynamic language runtime (DLR) is a runtime environment that adds a set of services f ...

  10. MVC中Action之间传值

    一  MVCAction之间的传值 之前一直觉得关于MVC里面的传值,只能从<视图—>Action>,和<Actoin->视图>但是今天在项目里面需要实现将几个视图 ...