UIViewControllers ...使用SubViews进行内存管理

时间:2012-01-06 10:34:31

标签: iphone objective-c ios memory uiviewcontroller

我有UIViewController谁拥有多个子视图,但跟踪分配的每个子视图是一项艰巨的任务,因为实际的编码器不是我,需要处理内存消耗。

我的问题是有没有办法控制内存调用递归函数来删除和释放UIViewController中的所有子视图而不知道实际的引用名称?

如以下代码所示:

for (UIView* subview in view){  
    [subview removeFromSuperView];  
    [subview release] ;
    subview = nil;   
}

1 个答案:

答案 0 :(得分:2)

当您在视图上调用removeFromSuperview时,它会自动减少保留计数(因为超级视图不再需要引用您刚删除的视图)。

如果您以标准方式将您的观点添加到超级视图中,则不需要执行您正在执行的操作 - 您已添加视图然后发布它们,或者您的视图是属性和发布后发生。

您提出的代码(所有子视图的递归循环)是一个坏主意,因为您实际上并不知道您的子视图是否可以安全释放。您可以轻松触发错误访问。