BruceLee
DocumentDiscussion

导航

统计
  • 随笔 - 63
  • 文章 - 0
  • 评论 - 48
  • 引用 - 0
公告
 

释放一个引用了另外一个视图的方法,步骤如下。

 

1) UIViewController A是主视图控制器; B是子视图控制器.

2) A创建了B的实例并且存储B的引用.

3) A增加B的视图为A的子视图.

一切都是正常的,可以看到B正确的显示在A的视图里.

4) A移除B视图.B的视图在代码中不存在任何的引用.

5)调用DidReceiveMemoryWarning (通过模拟或手动调用).

3.0以后不这样做,不需要重载这个函数,把释放内存的代码放到viewDidUnload中去。

这个函数的默认实现是:检查controller是否可以安全地释放它的view(这里加粗的view指的是controller的view属性),比如view本身没有superview并且可以被很容易地重建(从nib或者loadView函数)。

如果view可以被释放,那么这个函数释放view并调用viewDidUnload。

你可以重载这个函数来释放controller中使用的其他内存。但要记得调用这个函数的super实现来允许父类(一般是UIVIewController)释放view

如果你的ViewController保存着view的子view的引用,那么,在早期的iOS版本中,你应该在这个函数中来释放这些引用。而在iOS3.0或更高版本中,你应该在viewDidUnload中释放这些引用。

 

作者:Bruce Lee
出处:http://www.cnblogs.com/BruceLee521
本博原创文章版权归博客园和本人共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出作者名称和原文连接,否则保留追究法律责任的权利。 

posted on 2012-09-29 10:16 Bruce Lee 阅读(...) 评论(...) 编辑 收藏