iOS文档说明你的视图控制器应该释放(并且nil,因为这是良好的做法,实际上是2.x兼容性必须的)-dealloc中任何保留的出口.
该文档还说明,如果要在视图不可见时发出清除并且发出内存警告,则应在-viewDidUnload中对其进行相同的操作.
我想知道两件事:
理想的答案回答了上述两个问题,如果在-dealloc VS -viewDidUnload中最佳地释放哪些属性之间存在区别,则详细阐明这一区别.
小智 5
-viewDidUnload是严格用于释放IBOutlets与保留的属性.
其原因与UIViewController具有它保留的view属性的事实有关.该视图属性本身保留对其所有子视图的引用.这些子视图正是您在这些插座属性中保留的内容.问题在于这些子视图对它们有"额外"保留.
目标-viewDidUnload是清除不必要的内存使用情况.当-viewDidUnload被调用时,视图属性已被释放,这与它的所有子视图一起发布最高级别的UIView.由于我们保留了其中一些子视图,因此它们会留在内存中,我们希望释放它们,因为它们将不再使用.当(如果)重新加载视图时,将创建这些子视图的新副本.属性也设置为nil,严格来说我们没有指向释放内存的指针.
在-dealloc所有保留的属性和实例变量应该被释放.在-viewDidUnload刚刚执行的情况下,您将对[nil release];您刚刚设置为nil的IBOutlet保留属性发送无害.
| 归档时间: |
|
| 查看次数: |
875 次 |
| 最近记录: |