调用removeFromSuperview两次会导致崩溃或副作用吗?

3
我有一个UIView元素,我正在将它添加到主视图控制器中。
由于我的代码设计,不同的代码部分中两次调用了removeFromSuperview。
[myview removeFromSuperview];

这是我的代码,我想知道调用'removeFromSuperview'是否会造成问题。

还有如何检查视图是否在父视图中,然后再将其删除。

例如:

if (myview in superview)
    [myview removeFromSuperview];
else
    do nothing
2个回答

8

removeFromSuperview 的文档解释如下:

如果当前视图的 superview 不是 nil,那么 superview 将释放当前视图。 如果您计划重用视图,请确保在调用此方法之前保留它,并在以后适当时释放它。

这意味着不会发生崩溃或副作用,并且该方法已经执行了您所询问的检查。

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

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

removeFromSuperview会使子视图等于nil吗? - Ace Green

-1

试试这个:

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

你为什么要这样做?你应该检查myView.superview, 而不是 myView.view.superview. - Legonaftik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接