iPhone SDK管理Multiview应用程序的内存

时间:2010-09-02 19:36:05

标签: iphone objective-c uitextfield uilabel multiview

我有一个应用程序,可以根据文本文件的内容以编程方式创建标签和文本字段。无论何时加载视图控制器,它都会创建每次都不同的文本字段和标签。我的问题是我需要清除标签和文本字段而不释放视图控制器,因为我需要跟踪视图控制器。我试过self.viewController = nil,但我很确定这会导致内存泄漏。有没有办法删除视图的所有子视图?

2 个答案:

答案 0 :(得分:3)

Greg的意思是:

for (UIView *subview in self.view.subviews) {
    [subview removeFromSuperview];
}

这可能无法正常工作,因为当您在for循环中迭代数组时,Objective C不喜欢它。更安全的选择是:

while ([self.view.subviews count] > 0) { 
    [[self.view.subviews lastObject] removeFromSuperview]; 
}

答案 1 :(得分:0)

如果您有一个名为view的视图,则应该可以使用以下代码从视图中删除所有子视图:

for (UIView *subview in view) {
    [subview removeFromSuperview];
}