iOS 移除所有子视图
有的时候我们会有这样的需求,就是移除所有子视图
实际上就是NSArray中遍历元素的方法,如果使用for...in
遍历的话有点低级,我们可以使用NSArray的makeObjectsPerformSelector方法遍历元素响应removeFromSuperview
方法
1 | [view.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; |
或者,使用枚举器
1 | [[self.view subviews] enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { |
但是在swift
中subviews
是Array
类型,由于较之NSArray
类型swift
中的Array
类型要弱化好多
并没有makeObjectsPerformSelector
和枚举器
这两个方法
,我们可以使用高阶map函数
1 | view.subviews.map{$0.removeFromSuperview()} |
因为map返回一个<T>
类型,这样写出会报unused
的警告,代码洁癖的可以这样写。。。
1 | _ = view.subviews.map{$0.removeFromSuperview()} |