在不检查视图是否确实存在的情况下使用[[self.view viewWithTag:999] removeFromSuperview];
是否安全?
模拟器上没有错误,但它会不会导致真实设备出现问题?
没有使用这种情况有什么缺点吗?
答案 0 :(得分:11)
直接拨打[[self.view viewWithTag:999] removeFromSuperview];
是完全可以的。如果视图存在,则[self.view viewWithTag:999]
将返回视图,并将从其超级视图中删除。如果该视图不存在,那么[self.view viewWithTag:999]
将返回nil
并且将任何消息传递给 nil 将不会产生任何影响
因此,在您的情况下,无需检查视图是否确实存在。
答案 1 :(得分:1)
从UIView的苹果文档中回答
如果接收者的超级视图不是nil,则superview发布 接收器。如果您打算重用视图,请务必先保留它 调用此方法并在适当的时候再次释放它。
永远不要在视图的drawRect:方法中调用此方法。
带标签的视图将返回nil时不会发生任何事情。