码迷,mamicode.com
首页 > 移动开发 > 详细

Stanford iOS Learn Notes - 5

时间:2015-08-19 00:13:40      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:

今天总结一下 View Controller Lifecycle和Autolayout,即课程的第8节。

1. View Controller Lifecycle

其实听了两遍课程之后,我还是不能准确的总结出每一个controller的生命周期是多长。controller即MVC中的C,在MVC被创建后,controller的生命周期开始,这个很容易理解。但是我困惑的是MVC生命周期的结束。

  1. 首先怎么定义MVC生命周期的结果?controller的deinit函数被调用(内存释放)?还是View disapper了?对于调用Segue产生的MVC来说,只要这个MVC被从桌面移出了(disapper了),那么它就不会再出现了,因为每一次调用segue都是产生的新的MVC。通过课堂上的例子看的话,MVC的disppear和deinit并不是同时的。MVC Disappear的时候,并不会调用deinit,直到有一个新的同一类型的MVC产生的时候,disappear的MVC才会init。
  2. 我觉得还是要根据内存释放来定义controller的生命周期结束。但是问题是,这个内存释放的时间点事确定的么?

现在这两个问题自己还是无法解答,只能以后咨询别人或者在时间问题中慢慢琢磨了。不过本节课的侧重点并不是这个。本节课的侧重点是让你知道MVC的生命周期中各个主要的操作节点,即相应的API,然后通过覆盖相应的API函数来实现具体的工作。

总结一下,在View Controller的lifecycle中,有以下几个阶段:

  • Instantiated (from storyboard usually)
  • awakeFromNib
  • segue preparation happens
  • outlets get set
  • viewDidLoad
  • These pairs will be called each time your controller‘s view goes on/off screen...
    • viewWillAppear and viewDidAppear
    • viewWillDisappear and viewDidDisappear
  • These ‘geometry changed" methods might be called at any time after viewDidLoad ...
    • viewWillLayoutSubviews( ... then autolayout happens, then ...) viewDidLayoutSubviews
  • If memory get low, you might get ...
  • didReceiveMemoryWarning

2. Autolayout

其实本节课程并没有讲太多有关于Autolayout的东西。主要就是size class。size class概念很容易理解。

继承的协议为UITraitEnvironment,这个协议中有一个属性traitCollection,一个API traitCollectionDidChange。

这篇博客讲的有关compact和regular的知识很好:http://www.learnswift.io/blog/2014/6/12/size-classes-with-xcode-6-and-swift

经常翻阅吧。

 

Stanford iOS Learn Notes - 5

标签:

原文地址:http://www.cnblogs.com/yuhaos/p/4741060.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!