美文网首页
view的多一些理解

view的多一些理解

作者: _Homing_C | 来源:发表于2015-10-07 21:50 被阅读47次

view的多一些理解

viewcontrol
ViewController是IOS开发中MVC模式中的C,ViewController是view的controller,ViewController的职责主要包括管理内部各个view的加载显示和卸载,同时负责与其他ViewController的通信和协调。

在IOS中,有两类ViewController,一类是显示内容的,比如UIViewController、UITableViewController等,同时还可以自定义继承自UIViewController的ViewController;另一类是ViewController容器,UINavigationViewController和UITabBarController等,UINavigationController是以Stack的形式来存储和管理ViewController,UITabBarController是以Array的形式来管理ViewController。

view的加载
个人在参考一些别人的blog之后,感觉controller之下控制的view,就是就可以比作一个老式投影仪,view是一个内容卡片,controll需要将卡片放上去才能在屏幕之上显示出view的内容。
平时我们创建一个view有两个途径
1.使用代码
2.使用可视化

创建view的途径

就是在这幅图里面,我有种感觉就是说,viewcontroller控制view,其实也是用指针方式指向一个view,使得当前viewcontroller能够显示一个view出来,然后我就突然想到了老式投影仪一样。

view的卸载

view卸载

从图中可以看到,当系统发出内存警告时,会调用didReceiveMemoeryWarning方法,如果当前有能被释放的view,系统会调用viewWillUnload方法来释放view,完成后调用viewDidUnload方法,至此,view就被卸载了。此时原本指向view的变量要被置为nil,具体操作是在viewDidUnload方法中调用self.view = nil;
小结一下:
loadView和viewDidLoad的区别就是,loadView时view还没有生成,viewDidLoad时,view已经生成了,loadView只会被调用一次,而viewDidLoad可能会被调用多次(View可能会被多次加载),当view被添加到其他view中之前,会调用viewWillAppear,之后会调用viewDidAppear。当view从其他view中移除之前,调用viewWillDisAppear,移除之后会调用viewDidDisappear。当view不再使用时,受到内存警告时,ViewController会将view释放并将其指向为nil。

**注意**
1.不要在loadView中调用父类方法[super loadView],因为这会影响CPU性能。
2.切换前后台不会调用viewWillAppear

viewcontroller的生命周期
上面说到像老式投影仪,按照这样的对比,viewcontroller的生命周期其实也很好理解。首先需要有一台投影仪嘛(alloc肯定接着init,布偶过这里接着是initWithNibName),然后就需要把片子(就是view),放入到投影仪里面(loadview),但是这里没有viewWillUnload和viewDidUnload,原因?就是被抛弃了咯,哈哈。然后剩下就是比较熟悉的viewwillappear -> viewDidAppear -> viewWillDisappear -> viewDidDisappear -> dealloc。dealloc在arc里面或者没有那么明显,因为当一个对象的retain count变为0的时候,就会去调用这个dealloc方法,将对象的内存回收。

相关文章

  • view的多一些理解

    view的多一些理解 viewcontrolViewController是IOS开发中MVC模式中的C,ViewC...

  • 小程序实现 Tab 标签栏

    首先外层使用 View 包裹。我们可以把 View 当作 HTML 中的 div 标签使用来理解就行 其次,实现多...

  • 多一些理解

    2020.04.26 第14天 今天与孩子们一起共读《想换父母的男孩》。在前面的文字中,我曾提过,我在童年时期也想...

  • 多一些理解

    我们好多时候,只理解自己不理解别人。如果我们只理解自己,忽略别人,我们永远也成长不了。我们的成长需要我们用心去学习...

  • 多一些理解

    周五那天早晨,班上同学各司其职,大部分都拿起书本在阅读,我后门观察了全班同学一会,甚是满意。 在往教室走进,发现小...

  • 多一些理解

    昨天早上醒来,发现学校群里凌晨发布做核酸的通知,同时发布的还有本市检测到3例阳性人员的通告。我睡觉时手机都静音,自...

  • surfaceview初学

    什么是surfaceview?view和surfaceview的区别?理解surfaceview需要先理解view...

  • 多一些陪伴,多一些理解

    尊敬的学校领导、老师们、家长代表们、全体棋山四中的学生们: 大家上午好。 我是八年级四班学生刘香兰的家长,非常荣幸...

  • 多一些宽容多一些理解

    早上带操,生活老师把一个孩子送给我说是发烧38.5°我心里很着急。赶紧联系家长,成为妈妈以后似乎对38.5°这...

  • iOS事件响应链Hit-Test View

    Hit-Test View的大致理解 官方文档: The lowest view in the view hier...

网友评论

      本文标题:view的多一些理解

      本文链接:https://www.haomeiwen.com/subject/swhncttx.html