我要做一个

[vistaX removeFromSuperview];

在删除 super View 之前,如何测试它是否存在 vistaX?删除不存在的 View 会导致应用程序崩溃...

谢谢你的帮助。

最佳答案

你可以用以下方法保护它:

if(vistaX.superview)
     [vistaX removeFromSuperview];

虽然,我不知道如果没有 super View , removeFromSuperview 会失败。您确定这是问题所在,并且可能与 removeFromSuperview 释放 View 这一事实无关吗?

编辑 :
根据您在下面的评论,听起来 vistaX 的保留计数第一次将变为 0,并且正在被释放。如果您不希望发生这种情况,请向您的类添加一个保留 vistaX 的属性(即“@property (retain)”),这样您就可以确保它始终存在。

编辑 编辑 :
您是否掌握了 superView 或其祖先之一?如果是这样,我建议在 vistaX View 上设置一个唯一的 tag。这可以通过编程或通过 IB 来完成。然后,在祖先之一上使用 viewWithTag 选择器通过它的唯一标签搜索 vistaX View 。

关于IPHONE:测试 View 是否在 super View 上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1568089/

10-09 01:02