对Viewcontroller在UINavigationController中入栈出栈的一点点理解
2016-03-08 11:34
351 查看
转载自:http://blog.csdn.net/intheair100/article/details/41119073
wait_record_arr 在viewdidload里面被alloc,如果push进入下一个页面,再返回,viewwillappear方法会被调用,viewdidload方法不会被调用,wait_record_arr还是存在的,wait_record_arr的指针还是之前的那个值;如果这个VideoViewcontroller 被pop出去,再进入,wait_record_arr又要被alloc,该viewcontroller被pop,再进入里面的时候viewdidload方法会被调用,资源会重新申请。
cellforrow里面的cell也是这样的,push进入下一个界面,再pop回来,原来的cell还是存在的,即cell != nil。如果这个viewcontroller被pop后,再进入,cellfor里面的cell = nil,又要重新分配空间。
这个其实就是 跟uinavigationcontroller有关系,如果一个viewcontroller被push,那么其实就被压栈,内存空间还是存在的,如果是 被pop,就从栈里面被弹出,这个viewcontroller就被销毁了,所有的空间都不存在了,内存被释放了。原因是viewcontroller被pop出栈后,引发的了引用计数减为0。
注:经测试 push后再pop --> viewWillAppear 与 viewDidAppera 均会调用
wait_record_arr 在viewdidload里面被alloc,如果push进入下一个页面,再返回,viewwillappear方法会被调用,viewdidload方法不会被调用,wait_record_arr还是存在的,wait_record_arr的指针还是之前的那个值;如果这个VideoViewcontroller 被pop出去,再进入,wait_record_arr又要被alloc,该viewcontroller被pop,再进入里面的时候viewdidload方法会被调用,资源会重新申请。
cellforrow里面的cell也是这样的,push进入下一个界面,再pop回来,原来的cell还是存在的,即cell != nil。如果这个viewcontroller被pop后,再进入,cellfor里面的cell = nil,又要重新分配空间。
这个其实就是 跟uinavigationcontroller有关系,如果一个viewcontroller被push,那么其实就被压栈,内存空间还是存在的,如果是 被pop,就从栈里面被弹出,这个viewcontroller就被销毁了,所有的空间都不存在了,内存被释放了。原因是viewcontroller被pop出栈后,引发的了引用计数减为0。
注:经测试 push后再pop --> viewWillAppear 与 viewDidAppera 均会调用
相关文章推荐
- bluez 协议栈实现3 应用层的协议栈实现分析之dbus
- Fragment UI显示重叠问题
- ERROR:invalid byte sequence for encoding"UTF8"
- 解决CE6和CE5在Platform Builder的Connectivity Options上的冲突
- git pull request工作模式
- Storyboard中的UIScrollView使用自动布局,使其能够滚动
- GPUImage遇到的坑
- Qt使用教程之使用Qt Quick UI表单(五)
- iOS 疑难杂症(什么鬼系列)— — UIButton 点击卡顿/延迟
- iOS边练边学--UIScrollView的属性简单使用,代理的简单介绍以及内容缩放
- UITableView自定义区头
- UID, EUID, SUID, FSUID
- 《iOS Human Interface Guidelines》——Tab Bar
- UIDevice、NSBundle、NSLocale-获取手机信息
- UIButton 九宫格的封装
- Windows Azure Table Storage 解决 Guid 查询问题
- POJ 3384 Feng Shui 半平面交
- easyui datagrid 跳转指定页面问题
- POJ 2478 Farey Sequence
- Xcode7 UI自动化测试详解 带demo UITests