zoukankan      html  css  js  c++  java
  • IOS UIViewController 生命周期

    1. 从一个视图被创建,到呈现在屏幕上,之间的加载过程:

      1. alloc              // 申请内存

      2. init                // 调用构造函数,执行初始化方法,对本对象属性做监听时,在此处添加监听事件(addObserver:)。

      3. viewLoad             // 将要加载视图

      4. viewDidLoad          // 视图已经加载完成(将视图加到别一个View上做显示),正常情况下,在此处设置代理。

      5. viewWillAppear          // 视图将要渲染到屏幕上

      6. viewDidAppear          // 视图已经在屏幕上渲染完成

       PS:在第四步添加代理后,先执行代理方法,再执行viewWillAppear方法。

    2. 一个视图从屏幕上被移除并且被销毁之间的过程(其本上是上面加载到渲染流程的相反过程):

      1. viewWillDisappear       // 视图将要从屏幕上移除,包括UITabBar在切换时,也是将一个UIViewController从屏幕上移除

      2. viewDidDisappear       // 视图已经从屏幕上移除,用户在屏幕上看不到视图了

      // 3. viewWillUnload       // 在IOS6之前方法,在IOS6之后被舍弃,被didReceiveMemoryWarning(内存释放警告)

      3. dealloc             // 释放内存空间,将alloc, init, viewLoad时,分配的内存释放

    3. 关于内存释放

    在IOS6之前,使用viewDidUnload方法,在内存不足时,被执行,会将当前屏幕不显示的视图销毁,释放内存,但在IOS6及之后版本,viewDidUnload方法被舍弃了,使用didReceiveMemoryWarning方法替换,在内存不足时,发出警告,didReceiveMemoryWarning方法被执行。当然,在视图再次显示在屏幕上时,从内存分配开始执行一次。 

  • 相关阅读:
    [剑指offer] 7. 斐波那契数列
    [剑指offer] 6. 旋转数组的最小数字
    [剑指offer] 5. 用两个栈实现队列
    [剑指offer] 4. 重建二叉树
    [剑指offer] 3. 从头到尾打印链表
    vue.js从输入中的contenteditable元素获取innerhtml
    CSS3 ------- object-fit属性
    mouseenter和mouseover区别
    元素scroll系列属性
    淘宝flexible.js源码分析
  • 原文地址:https://www.cnblogs.com/naray/p/4730443.html
Copyright © 2011-2022 走看看