ARC环境下,自动释放UIViewController...
2015-09-20 23:21
591 查看
一般ARC情况下,包括UIViewController, UINavigationController, UITabBarController等Controller在常规使用中,都是由ARC自动管理内存,自动释放。但是,在一些特殊视图框架结构中(比如:搜狐新闻客户端的动态列表),需要频繁的操作View,需要及时的释放Controller内存。
记住一条原则: ARC基于引用记数,当该对象被引用的记数为0时,则自动删除对象。
然而,自动释放也需要编程时的一些注意事项和技巧,否则,ARC无法释放,导致常驻内存。笔者在使用过程中就发现Controller的dealloc()方法一直无法被调用到,后来经多次测试,得到以下经验:
按下列顺序调用,即可成功释放Controller内存:
1. 将任何引用到该controller的变量设置为空,主要为各控件的Delegate,比如:UITableView,UIScrollView的各种delegate(可直接将这些控件设置为nil),controller中的其它变量可不管。
2. [controller.view removeFromSuperview];
3. controller.view = nil;
4. controller = nil;
到此,Controller的dealloc()方法成功被调用,内存成功释放。
记住一条原则: ARC基于引用记数,当该对象被引用的记数为0时,则自动删除对象。
然而,自动释放也需要编程时的一些注意事项和技巧,否则,ARC无法释放,导致常驻内存。笔者在使用过程中就发现Controller的dealloc()方法一直无法被调用到,后来经多次测试,得到以下经验:
按下列顺序调用,即可成功释放Controller内存:
1. 将任何引用到该controller的变量设置为空,主要为各控件的Delegate,比如:UITableView,UIScrollView的各种delegate(可直接将这些控件设置为nil),controller中的其它变量可不管。
2. [controller.view removeFromSuperview];
3. controller.view = nil;
4. controller = nil;
到此,Controller的dealloc()方法成功被调用,内存成功释放。
相关文章推荐
- 【WPF学习】WPF、WinForm(C#)多线程编程并更新界面(UI)/子线程更新主界面方式
- ios学习笔记——UIScrollView
- Android UI界面shape的用法
- 扩展easyui 的表单验证
- NGUI 源码分析- AnchorPoint
- hdoj2670Girl Love Value【01背包】
- 八位 UUID
- uinty3d导入错误问题解决
- iOS 【UIKit-按钮移动操作】
- Longest Consecutive Sequence——Leetcode
- leetcode - N-Queens
- 最小生成树 POJ 3625Building Roads解题报告
- iOS程序-UIScrollView的基本使用
- String、StringBuffer与StringBuilder之间区别
- 【遍历枚举】hdu 5288 OO’s Sequence
- 利用UIEdgeInsets属性修改UIButton的图片,文字位置
- NGUI 源码分析- UIWidgetInspector
- 接口测试工具SoapUI Pro5.1.2基本使用20150920
- 使用EasyUI弹出框页面样式乱了——控制弹出框位置
- codeforces 5C C. Longest Regular Bracket Sequence(dp)