我的故事板中有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时它都会增长。即使我删除所有的超级视图。我想它们仍留在记忆中。
在我更改视图之前,我从superview中移除所有可能的视图,但它们仍然留在内存中。
Xcode设置为使用ARC,因此我无法释放它。
有没有什么好方法可以重用UIView?
谢谢
答案 0 :(得分:0)
[self.view addSubview:mynewView];
您的newView已添加为self.view的子视图。 您的上述代码不用于在self.view中删除yourVewView。 请在添加新视图之前尝试此代码:
for (UIView *view in self.view) {
if([view isKindOfClass:[YourNewViewClassName class]])
{
[view removeFromSuperView];
break;
}
}
答案 1 :(得分:-2)
删除子视图时,请将其设置为nil
,如下所示:
for (UIView *v in viewsToRemove) {
[v removeFromSuperview];
v = nil;
}
有关详细信息,请参阅示例Arc: Setting references to nil, for multiple buttons