在removeFromSuperview之前检查viewWithTag是否存在

时间:2011-08-19 10:04:26

标签: iphone cocoa-touch cocoa view tags

在不检查视图是否确实存在的情况下使用[[self.view viewWithTag:999] removeFromSuperview];是否安全?

模拟器上没有错误,但它会不会导致真实设备出现问题?

没有使用这种情况有什么缺点吗?

2 个答案:

答案 0 :(得分:11)

直接拨打[[self.view viewWithTag:999] removeFromSuperview];是完全可以的。如果视图存在,则[self.view viewWithTag:999]将返回视图,并将从其超级视图中删除。如果该视图不存在,那么[self.view viewWithTag:999]将返回nil并且将任何消息传递给 nil 将不会产生任何影响

因此,在您的情况下,无需检查视图是否确实存在。

答案 1 :(得分:1)

从UIView的苹果文档中回答

  

如果接收者的超级视图不是nil,则superview发布   接收器。如果您打算重用视图,请务必先保留它   调用此方法并在适当的时候再次释放它。

     

永远不要在视图的drawRect:方法中调用此方法。

带标签的视图将返回nil时不会发生任何事情。