【发布时间】:2012-08-07 00:32:27
【问题描述】:
我在想也许这样的事情可能会奏效:
for (UIView* b in self.view.subviews)
{
[b removeFromSuperview];
}
我想删除所有类型的子视图。 UIImages、Buttons、Textfields等
【问题讨论】:
-
那行得通。如果您有几层子视图,您可能必须递归地执行它......或者可能没有。我不确定你想这样做是为了什么。
-
这行得通吗?我认为
b会立即从subviews数组中删除,从而导致快速枚举循环中的突变,这是被禁止的。 -
@Mazyod 检查子视图属性:@property(nonatomic, readonly, copy) NSArray *subviews - 它被声明为副本,所以当我们删除子视图时我们不会修改该数组(因为它是一个副本)。
-
@Max:这是不正确的。
copy说明符意味着它在设置时复制;没有具体说明获取。很可能会返回一个副本,但这不是属性定义的一部分。 -
@W'rkncacnter 同意,你说得对,copy 关键字与获取值无关(但我认为这是隐含的)。
标签: iphone objective-c ios uikit