如果有人问过这个问题,请原谅我,而且我没有对 SO 进行足够好的搜索。
我正在执行以下操作来枚举子视图数组,同时从其父视图中删除每个子视图:
for( NSView *subview in [[self subviews] copy])
{
[subview removeFromSuperview];
}
它工作正常,但是有没有更合适的方法来实现这个循环,而不是简单地复制数组?
如果有人问过这个问题,请原谅我,而且我没有对 SO 进行足够好的搜索。
我正在执行以下操作来枚举子视图数组,同时从其父视图中删除每个子视图:
for( NSView *subview in [[self subviews] copy])
{
[subview removeFromSuperview];
}
它工作正常,但是有没有更合适的方法来实现这个循环,而不是简单地复制数组?
NSView
的subviews
getter 直接返回它的可变数组而不复制它。所以如果你想删除特定的子视图,方法就是复制它。否则,在您的特定情况下,由于您要删除所有子视图,您可以将其子视图设置为空数组:
[self setSubviews: @[] ];
这是一个选项
for (int i = self.subviews.count - 1; i >= 0; --i) {
UIView* v = self.subviews[i];
[v removeFromSuperview];
}