【iOS】UIViewController生命周期

【iOS】UIViewController生命周期

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

UIViewController有2周期:

在UIViewController中,View存在两个循环:载入循环卸载循环

【iOS】UIViewController生命周期

载入循环
1》
程序请求controller的view。

2》假设view在内存中,则直接载入。相反,假设不存在。则UIViewController调用loadView方法

3》loadView方法运行例如以下操作:

假设你重载了这种方法,则必须创建必要的view而且将一个非nil值传给UIViewController的view属性。

假设你没有重载这个函数,UIViewController会默认使用UIViewController的nibName和nibBundle属性尝试从nib文件载入view。假设没有找到nib文件,它尝试寻找一个与UIViewController类名匹配的nib文件。

假设没有可用的nib文件,那么它创建一个空的UIView作为它的view。

4》UIViewController调用viewDidLoad来运行一些载入时任务。

卸载循环


1》
程序收到内存警告。

2》每一个UIViewController调用didReceiveMemoryWarning。默认会安全地释放掉view。
3》假设UIViewController释放掉了它的view,它会调用viewDidUnload。
能够重载这种方法来进行额外的清理工作

UIViewController的生命周期

当一个视图控制器被创建。并在屏幕上显示的时候。 代码的运行顺序

1、 alloc                                   创建对象,分配空间
2、init (initWithNibName) 初始化对象,初始化数据
3、loadView                          从nib加载视图 ,通常这一步不须要去干涉。除非你没有使用xib文件创建视图
4、viewDidLoad                   加载完毕,能够进行自己定义数据以及动态创建其它控件
5、viewWillAppear              视图将出如今屏幕之前,立即这个视图就会被展如今屏幕上了
6、viewDidAppear               视图已在屏幕上渲染完毕

当一个视图被移除屏幕而且销毁的时候的运行顺序,这个顺序差点儿相同和上面的相反。
1、viewWillDisappear            视图将被从屏幕上移除之前运行
2、viewDidDisappear             视图已经被从屏幕上移除,用户看不到这个视图了
3、dealloc                                 视图被销毁,此处须要对你在init和viewDidLoad中创建的对象进行释放

关于viewDidUnload :在发生内存警告的时候假设本视图不是当前屏幕上正在显示的视图的话。 viewDidUnload将会被运行,本视图的全部子视图将被销毁,以释放内存,此时开发人员须要手动对viewLoad、viewDidLoad中创建的对象释放内存。 由于当这个视图再次显示在屏幕上的时候,viewLoad、viewDidLoad 再次被调用,以便再次构造视图。

參考:http://blog.csdn.net/huifeidexin_1/article/details/7566226

http://blog.csdn.net/teamlet/article/details/8579129

xn4545945收集整理:http://blog.csdn.net/xn4545945

版权声明:本文博主原创文章,博客,未经同意不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116996.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 关于电角度的理解[通俗易懂]

    关于电角度的理解[通俗易懂]从电磁分布的角度来看,永磁体(或励磁)产生的磁场空间分布呈现周期性变化,一个周期为电角度的360度。显然从任意N极出发沿着某圆周方向经过S极再到下一个N极为一个周期的电角度。此过程中永磁体经过了级对数p个电极,即电周期进行了p个,那么p极对数转一圈的电角度则为p*360度…

    2025年6月10日
    0
  • 端口扫描程序NMAP使用手册

    端口扫描程序NMAP使用手册

    2021年8月23日
    54
  • linux mysql 远程连接_docker远程部署

    linux mysql 远程连接_docker远程部署Linux下远程连接MySQL数据库的方法踩坑笔记估计搞了一个多小时才把这个远程连接搞好。一台本地电脑,一台云服务器,都是linux系统。步骤1、在服务器端开启远程访问首先进入mysql数据库,然后输入下面两个命令:grantallprivilegeson*.*to’root’@’%’identifiedby’password’;flushprivileges;第一个*是数据库…

    2022年10月13日
    0
  • 二叉树及其三种遍历[通俗易懂]

    二叉树及其三种遍历[通俗易懂]一.二叉树的常用性质1.常用性质<1>.在二叉树的第i层上最多有2^(i-1)个节点。(i>=1)<2>.二叉树中如果深度为k(有k层),那么最多有2^k-1个节点。(k>=1)<3>.若二叉树按照从上到下从左到右依次编号,则若某节点编号为k,则其左右子树根节点编号分别为2k和2k+1;<4>.二叉树分类:满二叉树…

    2022年5月6日
    185
  • XMLHttpRequest对象的status属性状态吗

    在做异步操作的时候,我们通常需要判断返回的状态码来判断服务器返回的数据是否正常,下面是常见的一些状态码和对应的含义。状态码200服务器正常处理了请求并响应404请求的页面(资源)没有找到403没有权限访问请求的页面(资源)405页面(资源)不接收该请求方式(比如用get请求一个只支持doPost方法的servlet)

    2022年2月24日
    41
  • 【JMeter】参数Parameters和Body Data

    【JMeter】参数Parameters和Body Data在做接口并发测试的时候,才发现Jmeter中的Parameters和BodyData两种参数格式并不是简单的一个是xx=xx,另外一个是json格式的参数先看一个接口[post]/api/xx/xxxx/xxxx通知服务端文件上传完毕输入参数:httpcontenttype:application/json名称|类型|是否必须|参数限制|描述———|–

    2022年6月23日
    18

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号