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相关推荐

  1. ViewController的生命周期分析和使用

    iOS的SDK中提供很多原生ViewController,大大提高了我们的开发效率,下面是我的一些经验. 一.结构 按结构可以对iOS的所有ViewController分成两类: 1.主要用于展示内容 ...

  2. viewController的生命周期

    一.结构 按结构可以对iOS的所有ViewController分成两类: 1.主要用于展示内容的ViewController,这种ViewController主要用于为用户展示内容,并与用户交互,如U ...

  3. 【转】iOS开发24:使用SQLite3存储和读取数据

    转自:http://my.oschina.net/plumsoft/blog/57626 SQLite3是嵌入在iOS中的关系型数据库,对于存储大规模的数据很有效.SQLite3使得不必将每个对象都加 ...

  4. 使用SQLite3存储和读取数据

    SQLite3是嵌入在iOS中的关系型数据库,对于存储大规模的数据很有效.SQLite3使得不必将每个对象都加到内存中. 基本操作: sqlite 的方法 sqlite3          *db, ...

  5. iOS开发23:通过归档永久存储数据

    2019独角兽企业重金招聘Python工程师标准>>> 之前一篇文章<iOS开发20:使用Settings Bundle为程序添加设置项>中简单介绍了怎样在Setting ...

  6. 访问Web服务器时 使用的协议是,使用SOAP协议访问Web服务

    SOAP是简单对象访问协议,它可看成是HTTP与XML的结合,其中XML部分是作为HTTP报文的实体主体部分. SOAP:简单对象访问协议,是一种轻量的.简单的.基于 XML 的协议,它被设计成在 W ...

  7. mysql和sqlite3 ios_iOS开发:用SQLite3存储和读取数据

    SQLite3是嵌入在iOS中的关系型数据库,对于存储大规模的数据很有效.SQLite3使得不必将每个对象都加到内存中. 基本操作: (1)打开或者创建数据库 sqlite3 *database; i ...

  8. 啰里啰嗦学IOS CoreDate入门

    创建项目 需要把Use Core Date勾上 把Main.storyboard删除. 点击如图文件. 点击下面的Add Entity 点击 + 添加属性和设置类型 选中Entity,修改为Perso ...

  9. ios app开发学习流程(入门到精通)

    一.xcode编译并运行app后,iphone模拟器已安装的app所在目录: # 1. /Users/alpha/Library/Application Support/iPhone Simulato ...

最新文章

  1. ROS Melodic安装、配置和使用turtlebot2(集成众多源代码直接下载)
  2. C++ Primer 5th笔记(chap 13 拷贝控制) 实例2内存管理
  3. android关机菜单修改,Android4.4关机菜单添加重启系列选项
  4. 前端学习(3173):react-hello-react之todoList教程
  5. 合并分ER图产生的冲突
  6. 【001:这条路很漫长,但出发了就不要想还有多远】
  7. 云原生数据库风起云涌,华为云GaussDB破浪前行
  8. 曾经很火的迅雷,为什么现在不怎么火了?
  9. DB2 INTERSECT、EXCEPT、UNION集合操作测试
  10. Linux基础——搭建自己的云计算, 多电脑共享你云端文件
  11. 【回文串9】LeetCode 409. Longest Palindrome
  12. 从零开始学wordpress 之四
  13. Python中Socket粘包问题的解决
  14. 【洛谷】 3264 [JLOI2015] 管道连接
  15. CTF-bugku-crypto-[简单加密]-凯撒密码的base64形式
  16. 星星之火-38:LTE物理层无线资源与帧结构快速入门
  17. 区块链 入门 基础知识
  18. 工商银行网银助手无法安装:系统无法打开指定的设备或文件
  19. 多元微积分_旋度1.正负0旋度
  20. 游戏开发19课 tilemap 创建瓦片

热门文章

  1. 测试开发python面试_python测试开发面试之深浅拷贝
  2. java实现串口ymodem 传输文件_活久见!Jmeter也能实现文件传输和发送邮件啦
  3. pythondevp2p_以太坊GO、JAVA、PYTHON、RUBY、JS客户端介绍
  4. java jpanel 缓冲画图_Java:Jpanel 缓冲区 图像
  5. django 函数装饰器 变为 类装饰器
  6. 2017年4月19日
  7. 《架构之美》阅读笔记01
  8. 1289 大鱼吃小鱼
  9. cxf返回的报文,命名空间无前缀
  10. Android4大组件