如何设计良好的viewcontroller
ViewController生命周期中有那么多函数,一个重要问题就是什么代码该写在什么地方。
1、init里不要出现创建view的代码。良好的设计,在init里应该只有相关数据的初始化,而且这些数据都是比较关键的数据。init里不要掉self.view,否则会导致viewcontroller创建view。(因为view是lazyinit的)。
2、loadView中只初始化view,一般用于创建比较关键的view如tableViewController的tabView,UINavigationController的navgationBar,不可掉用view的getter(在掉super loadView前),最好也不要初始化一些非关键的view。如果你是从nib文件中创建的viewController在这里一定要首先调用super的loadView方法,但建议不要重载这个方法。
3、viewDidLoad 这时候view已经有了,最适合创建一些附加的view和控件了。有一点需要注意的是,viewDidLoad会调用多次(viewcontroller可能多次载入view,参见图2)。
4、viewWillAppear 这个一般在view被添加到superview之前,切换动画之前调用。在这里可以进行一些显示前的处理。比如键盘弹出,一些特殊的过程动画(比如状态条和navigationbar颜色)。
5、viewDidAppear 一般用于显示后,在切换动画后,如果有需要的操作,可以在这里加入相关代码。
6、viewDidUnload 这时候viewController的view已经是nil了。由于这一般发生在内存警告时,所以在这里你应该将那些不在显示的view释放了。比如你在viewcontroller的view上加了一个label,而且这个label是viewcontroller的属性,那么你要把这个属性设置成nil,以免占用不必要的内存,而这个label在viewDidLoad时会重新创建
如何设计良好的viewcontroller相关推荐
- ViewController的生命周期分析和使用
iOS的SDK中提供很多原生ViewController,大大提高了我们的开发效率,下面是我的一些经验. 一.结构 按结构可以对iOS的所有ViewController分成两类: 1.主要用于展示内容 ...
- viewController的生命周期
一.结构 按结构可以对iOS的所有ViewController分成两类: 1.主要用于展示内容的ViewController,这种ViewController主要用于为用户展示内容,并与用户交互,如U ...
- 【转】iOS开发24:使用SQLite3存储和读取数据
转自:http://my.oschina.net/plumsoft/blog/57626 SQLite3是嵌入在iOS中的关系型数据库,对于存储大规模的数据很有效.SQLite3使得不必将每个对象都加 ...
- 使用SQLite3存储和读取数据
SQLite3是嵌入在iOS中的关系型数据库,对于存储大规模的数据很有效.SQLite3使得不必将每个对象都加到内存中. 基本操作: sqlite 的方法 sqlite3 *db, ...
- iOS开发23:通过归档永久存储数据
2019独角兽企业重金招聘Python工程师标准>>> 之前一篇文章<iOS开发20:使用Settings Bundle为程序添加设置项>中简单介绍了怎样在Setting ...
- 访问Web服务器时 使用的协议是,使用SOAP协议访问Web服务
SOAP是简单对象访问协议,它可看成是HTTP与XML的结合,其中XML部分是作为HTTP报文的实体主体部分. SOAP:简单对象访问协议,是一种轻量的.简单的.基于 XML 的协议,它被设计成在 W ...
- mysql和sqlite3 ios_iOS开发:用SQLite3存储和读取数据
SQLite3是嵌入在iOS中的关系型数据库,对于存储大规模的数据很有效.SQLite3使得不必将每个对象都加到内存中. 基本操作: (1)打开或者创建数据库 sqlite3 *database; i ...
- 啰里啰嗦学IOS CoreDate入门
创建项目 需要把Use Core Date勾上 把Main.storyboard删除. 点击如图文件. 点击下面的Add Entity 点击 + 添加属性和设置类型 选中Entity,修改为Perso ...
- ios app开发学习流程(入门到精通)
一.xcode编译并运行app后,iphone模拟器已安装的app所在目录: # 1. /Users/alpha/Library/Application Support/iPhone Simulato ...
最新文章
- ROS Melodic安装、配置和使用turtlebot2(集成众多源代码直接下载)
- C++ Primer 5th笔记(chap 13 拷贝控制) 实例2内存管理
- android关机菜单修改,Android4.4关机菜单添加重启系列选项
- 前端学习(3173):react-hello-react之todoList教程
- 合并分ER图产生的冲突
- 【001:这条路很漫长,但出发了就不要想还有多远】
- 云原生数据库风起云涌,华为云GaussDB破浪前行
- 曾经很火的迅雷,为什么现在不怎么火了?
- DB2 INTERSECT、EXCEPT、UNION集合操作测试
- Linux基础——搭建自己的云计算, 多电脑共享你云端文件
- 【回文串9】LeetCode 409. Longest Palindrome
- 从零开始学wordpress 之四
- Python中Socket粘包问题的解决
- 【洛谷】 3264 [JLOI2015] 管道连接
- CTF-bugku-crypto-[简单加密]-凯撒密码的base64形式
- 星星之火-38:LTE物理层无线资源与帧结构快速入门
- 区块链 入门 基础知识
- 工商银行网银助手无法安装:系统无法打开指定的设备或文件
- 多元微积分_旋度1.正负0旋度
- 游戏开发19课 tilemap 创建瓦片