枚举该数组时从数组中删除元素

时间:2013-07-04 23:53:33

标签: objective-c arrays enumeration

如果有人问我,请原谅我,并且我没有在SO上进行足够好的搜索。

我正在执行以下操作来枚举一组子视图,同时从其超级视图中删除每个子视图:

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

它运行正常,但有没有更合适的方法来实现这个循环,而不是简单地复制数组?

2 个答案:

答案 0 :(得分:2)

NSView的{​​{1}} getter直接返回它的可变数组而不复制它。因此,如果要删除特定子视图,则执行此操作的方法是复制它。否则,在您的特定情况下,由于您要删除所有子视图,您只需将其子视图设置为空数组:

subviews

答案 1 :(得分:0)

这是一个选项

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