iphone内存管理(基础)

时间:2010-08-19 01:42:34

标签: iphone memory-management

关于iPhone内存管理的非常基本的问题:

假设我有一个viewController,其中有几个子视图也由viewControllers控制。当我删除顶部viewController并释放实例时 - 它的子节点会发生什么?是否所有包含的对象都被释放了?

当我在乐器中运行我的应用程序时,我没有任何内存泄漏。但“所有分配”的价值是否会上升? (我假设这个值是我的应用程序消耗的总内存?)

2 个答案:

答案 0 :(得分:1)

这取决于您的孩子 UIViewControllers 的引用位置。如果它们仅在根视图控制器中引用(在 dealloc 上创建和释放时保留),则在取消分配时将释放它们。如果您有其他对这些视图控制器的引用(可能来自您的应用程序委托?),它们只会在发布这些引用时被释放。

Cocoa touch NSObjects被引用计数,当它们retainCount递减到零时它们被释放。每当在对象上调用release时, retainCount 就会递减。

答案 1 :(得分:1)

View控制器在dealloc上发布视图。视图在dealloc上发布他们的子视图。发布不是dealloc。

什么保留其他视图控制器?如果您的视图控制器是,那么您的视图控制器应该释放它们。通常这将是一个属性,所以你可以做self.subViewController = nil。

此外,如果您有任何IBOutlets(我真的希望您使用这些属性),您还必须在dealloc中将它们设置为nil。

发布您拥有的内容。