如果有人问我,请原谅我,并且我没有在SO上进行足够好的搜索。
我正在执行以下操作来枚举一组子视图,同时从其超级视图中删除每个子视图:
for( NSView *subview in [[self subviews] copy])
{
[subview removeFromSuperview];
}
它运行正常,但有没有更合适的方法来实现这个循环,而不是简单地复制数组?
答案 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];
}