【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)
上一篇 2022年1月12日 上午11:00
下一篇 2022年1月12日 上午11:00


相关推荐

  • 八皇后问题递归算法思想_迷宫在数据结构中的地位

    八皇后问题递归算法思想_迷宫在数据结构中的地位一、迷宫回溯问题1.问题一个7*8的数组模拟迷宫,障碍用1表示,通路使用0表示,给定起点(1,1)和终点(6,5),要求给出起点到终点的通路2.解题思路首先,我们需要给程序一个寻向的基本策略,

    2022年8月16日
    7
  • 关于ubuntu 18 SSH root 登录失败,设置PermitRootLogin = yes 也失败

    关于ubuntu 18 SSH root 登录失败,设置PermitRootLogin = yes 也失败切换到root用户下。apt-getinstallssh再次尝试就可以了这里我的问题是,/home下的用户安装了ssh了,但是,root用户没有安装。????这是区分的。

    2022年6月3日
    38
  • 7628刷breed_H大的最新版Breed不死u-boot

    7628刷breed_H大的最新版Breed不死u-boot文件名说明 BreedEnter exeBreed 启动中断工具 实现免按复位键进入 Web 刷机模式 breed mt7620 reset1 binMT7620A MT7620N 全通用 波特率 57600 复位键 GPIO 1breed mt7620 reset2 binMT7620A MT7620N 全通用 波特率 57600 复位键 GPIO 2breed mt7620 reset11

    2026年3月19日
    2
  • RESTful的详解

    RESTful的详解RESTful 也称为 REST 英文 Representati 即表现层状态传递 它是一种软件架构风格或设计风格 而不是一个标准

    2026年3月17日
    3
  • 两个51单片机之间进行串行通信

    两个51单片机之间进行串行通信文章目录案例介绍 案例分析 硬件设计案例介绍 利用单片机 a 将一段流水灯控制程序发送到单片机 b 来控制单片机 b 的 P1 口 点亮 8 位 LED 灯 案例分析 a 完成发送 b 完成接收 编写程序设置 a 令 SM0 0 SM1 1 串行口工作方式 1 设置 b 令 SM0 0 SM1 1 REN 1 使接收允许 1 数据发送程序 include reg51 h unsignedchar 0xfe 0xfd 0xfb 0xf7 0xef 0xdf 0xbf 0x7f reg51 h

    2026年3月18日
    2
  • Microsoft Enterprise Library: Logging 模块「建议收藏」

    Microsoft Enterprise Library: Logging 模块「建议收藏」MicrosoftEnterpriseLibrary中的Logging模块主要用来记录日志,它可以将日志存储在不同的介质中:文本文件,WindowsEvent,邮件,MSMQ,DataBase,Xml等等。当然它还提供了扩展功能,通过扩展Logging模块的Listener类,我们就能将日志记录在我们需要的地方了。   虽然MicrosoftEnterpriseLibrary很庞大,但

    2022年10月20日
    4

发表回复

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

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