将调用removeFromSuperview两次导致崩溃或副作用

时间:2011-11-28 09:35:54

标签: iphone ios uiview

我有一个UIView元素,我将其添加到主视图控制器中。

由于我的代码设计,所以在我的代码的不同位置调用removeFromSuperview两次。

[myview removeFromSuperview];

这就是我的代码,所以我想知道调用'removeFromSuperview'是否会导致任何问题。

或者我如何检查视图是否在superview中,只删除它。

e.g

if (myview in superview)
    [myview removeFromSuperview];
else
    do nothing

2 个答案:

答案 0 :(得分:8)

removeFromSuperview的文档告诉以下内容:

  

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

这意味着不会发生崩溃或副作用,并且已经通过此方法的实施执行了您正在询问的检查。

但是,如果您需要检查您的视图是否作为子视图添加到其他视图中,您可以使用以下代码:

if( theView.superview != nil )
{
  // theView is a subview for some view
}

答案 1 :(得分:-1)

试试这个:

if (myView.view.superview != nil) {
    [myView removeFromSuperview];
}
else {
    //do something
}
相关问题