我的故事板中有UIView,有出口mynewView,我希望它以完全不同的内容显示。 并且做很多次。
我的UIView包含许多对象,我从互联网加载它。但每次我这样做
NSArray *viewsToRemove = [view1 mynewView];
for (UIView *v in viewsToRemove) {
[v removeFromSuperview];
}
//Let's try to remove all possible views..
viewsToRemove = [self.view subviews];
for (UIView *v in viewsToRemove) {
[v removeFromSuperview];
}
//here i create mynewView
mynewView = [self createnewRandomView];
//And finally add the View we have created.
[self.view addSubview:mynewView];
我监控内存消耗,每次添加新的UIView时,我都会看到内存消耗的增长。即使我删除了所有超级视图。我想它们留在记忆中。
在我更改视图之前,我从超级视图中删除了所有可能的视图,但它们仍保留在内存中。
Xcode设置为使用ARC,所以我无法发布它。
有什么好方法可以重用UIView吗?
谢谢
[self.view addSubview:mynewView];
您的新视图已添加为 self.view 的子视图。您上面的代码不用于在self.view中删除您的VewView。请在添加新视图之前尝试以下代码:
for (UIView *view in self.view) {
if([view isKindOfClass:[YourNewViewClassName class]])
{
[view removeFromSuperView];
break;
}
}
删除子视图时,请将它们设置为随时nil
,如下所示:
for (UIView *v in viewsToRemove) {
[v removeFromSuperview];
v = nil;
}
有关更多信息,请参阅示例 Arc:设置对 nil 的引用,对于多个按钮