我可以重用UIView吗?

时间:2012-09-26 19:55:21

标签: iphone ios uiview reusability

我的故事板中有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?

谢谢

2 个答案:

答案 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