2013-07-04 161 views
1

请原谅我,如果这已被问到,并且我没有对SO执行足够好的搜索。枚举阵列时从阵列中删除元素

我做以下,以枚举子视图数组,而从它的父删除每个子视图:

for(NSView *subview in [[self subviews] copy]) 
{ 
    [subview removeFromSuperview]; 
} 

它工作正常,但有实现这个循环,而不是一个更合适的方法只需复制数组?

+0

可能重复 - 删除所有SubViews?](http://stackoverflow.com/questions/2156015/iphone-remove-all-subviews) – Danilo

+0

这是我知道的最优雅的方式。 –

+0

@Danilo我想我正在寻求解决这个问题的最佳方法。我有一个工作解决方案,我想知道更好的/更正确的方法来做到这一点。 – wh1tney

回答

2

NSView's subviews getter直接返回它的可变数组而不复制它。所以,如果你想删除特定的子视图,其实现方式就是复制它。否则,在特定情况下,由于要删除所有子视图,你可以设置它的子视图是一个空数组:

[self setSubviews: @[] ]; 
+0

谢谢。并感谢'setSubviews:'方法提示。 – wh1tney

0

这是一个选项[iPhone的

for (int i = self.subviews.count - 1; i >= 0; --i) { 
    UIView* v = self.subviews[i]; 
    [v removeFromSuperview]; 
} 
+0

谢谢你的回答。我想我正在寻找一些更优雅的东西,但我认为这也是一样。 – wh1tney