简单上代码吧。
我在更新UIView时候需要先将其中已经存在的一些移除掉
if ([NSThread currentThread] == [NSThread mainThread]){
NSLog(@"before remove:%ld", [[self subviews] count]);
[Helper removeAllSubViews:self];
NSLog(@"after remove:%ld", [[self subviews] count]);
}
Helper removeAllSubViews我就不贴代码了,很简单,获取view的subviews,用foreach遍历然后调用removeFromSuperview而已。
很明显我这里确定了这段代码是主线程运行的,但是这样执行仍然没有效果。假如移除之前是4个subview,移除之后还是4个。然后我发现不断更新过程中subview越来越多(每次累计的,没有清除掉之前的),而且由于之前的没有清空成功,全部叠加一起显示特别乱套。
我还特别的看了下系统的注释代码,并没有什么特殊的说明什么情况会移除失败啊。