2012-09-26 135 views
1

我有我的故事板与出口mynewView UIView,我希望它显示完全不同的内容。并做很多次。我可以重用UIView吗?

我的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?

感谢

回答

-2

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

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

欲了解更多信息,请参见例如Arc: Setting references to nil, for multiple buttons

+1

你真的应该阅读链接的文章 - 注意“NO”双组分,并再次检查你的答案。 – Till

+0

我错过了原始提问者并不持有对子视图的引用的事实,对不起。那么你的答案是什么? –

0
[self.view addSubview:mynewView]; 

你NewView的被添加为self.view的子视图。 您的上述代码不会用于在self.view中删除您的VewView。 请添加新视图之前尝试此代码:

for (UIView *view in self.view) { 
    if([view isKindOfClass:[YourNewViewClassName class]]) 
    { 
     [view removeFromSuperView]; 
     break; 
    } 
}