1

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

谢谢

4

2 回答 2

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;
   }
}
于 2012-09-27T01:43:35.473 回答
-2

当你删除子视图时,将它们设置nil为你去,像这样:

for (UIView *v in viewsToRemove) {
   [v removeFromSuperview];
    v = nil;
}

有关更多信息,请参阅例如Arc:为多个按钮设置对 nil 的引用

于 2012-09-26T21:14:55.860 回答