【问题标题】:iPhone SDK Managing Memory for Multiview appiPhone SDK 管理多视图应用程序的内存
【发布时间】:2010-09-02 19:36:05
【问题描述】:
我有一个应用程序可以根据文本文件的内容以编程方式创建标签和文本字段。每当加载视图控制器时,它都会创建每次不同的文本字段和标签。我的问题是我需要在不释放视图控制器的情况下清除标签和文本字段,因为我需要跟踪视图控制器。我试过self.viewController = nil,但我很确定这会导致内存泄漏。有没有办法删除一个视图的所有子视图?
【问题讨论】:
标签:
iphone
objective-c
uitextfield
uilabel
multiview
【解决方案1】:
格雷格的意思是这样的:
for (UIView *subview in self.view.subviews) {
[subview removeFromSuperview];
}
这可能不会像您期望的那样工作,因为当您在 for 循环中迭代数组时,Objective C 不喜欢它。更安全的选择是:
while ([self.view.subviews count] > 0) {
[[self.view.subviews lastObject] removeFromSuperview];
}
【解决方案2】:
如果您有一个名为 view 的视图,您应该能够使用以下代码从视图中删除所有子视图:
for (UIView *subview in view) {
[subview removeFromSuperview];
}