在枚举该数组时从数组中删除元素
Posted
技术标签:
【中文标题】在枚举该数组时从数组中删除元素【英文标题】:Removing elements from an array while enumerating over that array 【发布时间】:2013-07-04 23:53:33 【问题描述】:如果有人问过这个问题,请原谅我,我没有对 SO 进行足够好的搜索。
我正在执行以下操作来枚举子视图数组,同时从其父视图中删除每个子视图:
for( NSView *subview in [[self subviews] copy])
[subview removeFromSuperview];
它工作正常,但是有没有更合适的方法来实现这个循环,而不是简单地复制数组?
【问题讨论】:
iPhone - Remove all SubViews? 的可能重复项 这是我所知道的最优雅的方式。 @Danilo 我想我正在寻求解决该问题的最佳方法。我有一个可行的解决方案,我想知道首选/更正确的方法。 【参考方案1】:NSView
的subviews
getter 直接返回它的可变数组而不复制它。所以如果你想删除特定的子视图,方法就是复制它。否则,在您的特定情况下,由于您要删除所有子视图,您可以将其子视图设置为空数组:
[self setSubviews: @[] ];
【讨论】:
【参考方案2】:这是一个选项
for (int i = self.subviews.count - 1; i >= 0; --i)
UIView* v = self.subviews[i];
[v removeFromSuperview];
【讨论】:
感谢您的回答。我想我正在寻找更优雅的东西,但我认为这同样适用。以上是关于在枚举该数组时从数组中删除元素的主要内容,如果未能解决你的问题,请参考以下文章