我即将做一个
[vistaX removeFromSuperview];
如何在删除之前测试超级视图中是否存在vistaX?删除不存在的视图会导致应用程序崩溃...
感谢您的帮助。
答案 0 :(得分:14)
你可以用以下方式保护它:
if(vistaX.superview)
[vistaX removeFromSuperview];
虽然,我不知道如果没有superview,removeFromSuperview会失败。您确定这是问题吗?它可能与removeFromSuperview释放视图的事实有关吗?
修改强>: 根据你在下面的评论,听起来vistaX的保留计数第一次出现在0并且它被释放。如果您不希望发生这种情况,请在您的类中添加一个保留vistaX的属性(即“@property(retain)”),这样您就可以确定它始终存在。
编辑编辑: 你有superView或其祖先的句柄吗?如果是这样,我建议在vistaX视图上设置唯一的tag。这可以通过编程方式或通过IB完成。然后,使用其中一个祖先上的viewWithTag选择器按其唯一标记搜索vistaX视图。
答案 1 :(得分:2)
您可以通过应用
之类的条件来检查它if(vistaX.superview!=nil)
[vistaX removeFromSuperview];
然后如果superview存在,它将从超级视图中删除,否则不会。