我可以重用UIView吗?



我的故事板中有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 的引用,对于多个按钮

最新更新