文档章节

iOS生命周期注意事项

Ethan-GOGO
 Ethan-GOGO
发布于 2016/05/16 16:39
字数 910
阅读 41
收藏 0

viewDidappear 更改xib内容

 

一、 ARC环境
单个viewController的生命周期
initWithCoder:(NSCoder *)aDecoder:(如果使用storyboard或者xib)
loadView:加载view
viewDidLoad:view加载完毕
viewWillAppear:控制器的view将要显示
viewWillLayoutSubviews:控制器的view将要布局子控件
viewDidLayoutSubviews:控制器的view布局子控件完成
这期间系统可能会多次调用viewWillLayoutSubviews 、    viewDidLayoutSubviews 俩个方法
viewDidAppear:控制器的view完全显示
viewWillDisappear:控制器的view即将消失的时候
这期间系统也会调用viewWillLayoutSubviews 、viewDidLayoutSubviews 两个方法
viewDidDisappear:控制器的view完全消失的时候
多个viewControllers跳转
当我们点击push的时候首先会加载下一个界面然后才会调用界面的消失方法
initWithCoder:(NSCoder *)aDecoder:ViewController2 (如果用xib创建的情况下)
loadView:ViewController2
viewDidLoad:ViewController2
viewWillDisappear:ViewController1 将要消失
viewWillAppear:ViewController2 将要出现
viewWillLayoutSubviews ViewController2
viewDidLayoutSubviews ViewController2
viewWillLayoutSubviews:ViewController1
viewDidLayoutSubviews:ViewController1
viewDidDisappear:ViewController1 完全消失
viewDidAppear:ViewController2 完全出现
小结:
-整个控制器声明周期: viewDidLoad -> viewWillAppear -> viewWillLayoutSubviews -> viewDidLayoutSubviews -> viewDidAppear -> viewWillDisappear -> viewDidDisappear

二、非ARC环境下
didReceiveMemoryWarning:
当app收到内存警告的时候会发消息给视图控制器。
app从来不会直接调用这个方法,而是当系统确定可用内存不足的时候采取调用。
如果你想覆写这个方法来释放一些控制器使用的额外内存,你应该在你的实现方法中调用父类的实现方法。
viewWillUnload:(iOS6废除)
当消除掉控制器的视图之前调用
视图不会再在低内存条件下被清除所以这个方法不会再被调用。
在iOS5之前,当低的内存情况发生的时候,当前控制器的视图们不再被需要的时候,系统会有选择性的将这些视图从这些内存移除。这个方法被调用的目的是在视图被真正的销毁前你可以执行一些清空的任务。比如,你想要使用这个方法去清空视图的观察者或通知或者记录视图的状态以便当重新读取的时候恢复。
在iOS6之后,不再需要清空视图的引用。因此,其他一些关于清理的方法,比如清空观察者,也不是必要的了。
viewDidUnload:(iOS6废除)
当视图从内存中被消除后调用
视图在地的内存情况下不再被销毁所以这个方法也不再会调用
在iOS5之前,地的内存状况发生之后,当前的试图控制器的视图不再被需要,系统会选择性的在视图控制器的视图被销毁后调用。这个方法使你执行一些最后清空任务的最后机会如果你的视图控制器存储着对视图的或子控件的单独引用,你应该使用这个方法去释放这些引用。你也可以使用这个方法去消除一些你再创建视图时候所创建的但是当视图不再的时候不再需要的关于对象的引用。你不应该使用这个方法去释放用户数据或者一些不能轻易被重新创建的数据。
在iOS6之后,清空在试图控制器中对views和其他对象的引用已经没有必要了。
当这个方法被调用的时候,视图的属性是空的。

文/Mitchell(简书作者)
原文链接:http://www.jianshu.com/p/fcfbd4919b0b
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

 

© 著作权归作者所有

共有 人打赏支持
Ethan-GOGO
粉丝 13
博文 174
码字总数 82033
作品 0
广州
私信 提问
2018 iOS 面试题大全(补充完整版)

原文地址:2018 iOS 面试题大全 由于原作者并没有继续更新,这里我转过来继续更新下 这个栏目将持续更新--请iOS的小伙伴关注! 1、iOS 应用导航模式有哪些? 2、iOS 中持久化方式有哪些? 3、...

Theendisthebegi
2018/11/15
0
0
iOS基础深入补完计划--NSURLSession使用详解(附Demo)

目录 前言 API Demo 前言 本文主要是把NSURLSession以及NSURLSessionTask相关的代理方法全部整理了一下。 旨在大体了解在一个iOS网络请求中、一个任务究竟经理了什么。 而我们、又能做些什么...

kirito_song
2018/05/10
0
0
转:基于IOS上MDM技术相关资料整理及汇总

一、MDM相关知识: MDM (Mobile Device Management ),即移动设备管理。在21世纪的今天,数据是企业宝贵的资产,安全问题更是重中之重,在移动互联网时代,员工个人的设备接入企业网络并查...

移动互联百科
2013/10/06
0
0
iOS 学习资料整理

视频教程(英文) Developing iOS 7 Apps for iPhone and iPad 斯坦福开放教程之一, 课程主要讲解了一些 iOS 开发工具和 API 以及 iOS SDK 的使用, 属于 iOS 基础视频 iPad and iPhone Applic...

拉偶有所依
2015/01/19
2.2K
4
SegmentFault D-Day 2015 北京:iOS 站

SegmentFault D-Day 介绍 SegmentFault D-Day,是由国内最前沿的开发者社区 SegmentFault 主办的技术沙⻰,于2014年正式启动。2015年上半年D-Day已在北、上、广、深、杭等城市成功举办9场,活...

文洁洁洁
2015/11/26
240
0

没有更多内容

加载失败,请刷新页面

加载更多

精读《论语》读后感作文3600字

精读《论语》读后感作文3600字: 学而篇第一:子曰:“学而时习之,不亦说乎?有朋友自远方来,不亦悦乎?人不知,而不愠,不亦君子乎? 朱熹解:即学而又时时习之,则学者熟,而衷心喜悦,其...

原创小博客
35分钟前
0
0
CPU内存结构

开局一张图 由于CPU频率太快了,为解决直接读取内存的数据上的延迟,在CPU和内存之间,存在3级缓存。 CPU在解决和缓存不一致上采用两种方式: 缓存一致性协议 总线锁机制 CPU CPU的一个时钟周...

春哥大魔王的博客
38分钟前
1
0
记一次centos 7内核升级事故

情景 公司做等保3测评,在进行系统漏洞检测时发现内核存在漏洞,需要进行升级。 名称 版本 升级前内核 CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core) 升级后内核 CentOS Linux (3.10.0-957...

阿dai
今天
8
0
PowerDesigner操作

1.去掉生成DDL里的注释 Database -> Edit Current DBMS -> Script -> Syntax -> BlockComment,去掉BlockComment里面的value内容。...

了凡川
今天
3
0
Django集成Markdown编辑器【附源码】

专注内容写作的你一定不要错过markdown 简单介绍 markdown是一种标记语言,通过简单的标记语法可以使普通的文本内容具有一定的格式,使用非常简单,学习成本极低 目前各大Blog平台都已支持m...

运维咖啡吧
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部