iOS removeFromSuperview如果未添加到superview,则不会';不要出错

iOS removeFromSuperview如果未添加到superview,则不会';不要出错,ios,cocoa-touch,uiview,Ios,Cocoa Touch,Uiview,我尝试在一个尚未添加为子视图的视图上removeFromSuperview,但Xcode 4没有抛出任何错误。这是预期的行为吗?首先,Xcode 4不会做任何事情。这就是IDE。它与应用程序的运行时行为无关 其次,-removeFromSuperview的文档说明 如果接收器的superview不是nil,则superview将释放接收器 如果视图没有superview,这会导致您期望-removeFromSuperview引发异常的哪一部分 无论如何,答案是肯定的,这是正常的-removeFr

我尝试在一个尚未添加为子视图的视图上
removeFromSuperview
,但Xcode 4没有抛出任何错误。这是预期的行为吗?

首先,Xcode 4不会做任何事情。这就是IDE。它与应用程序的运行时行为无关

其次,
-removeFromSuperview
的文档说明

如果接收器的superview不是nil,则superview将释放接收器

如果视图没有superview,这会导致您期望
-removeFromSuperview
引发异常的哪一部分


无论如何,答案是肯定的,这是正常的<代码>-removeFromSuperview不会引发异常。

这不是我所期望的,但它似乎与文档不一致。对于Xcode 4,我指的是控制台输出错误。但在我的例子中,接收器的超视距不是零。超级视图存在,但我从超级视图中移除的子视图尚未添加到超级视图中。这就是为什么我想知道为什么它不输出任何错误?根据定义,它不是一个错误---使用异常来通知预期情况不是一种好的编程实践(在这种语言中)。抛出异常会使您脱离调用堆栈框架,并会泄漏内存;如果我们这样做是为了处理常见的“异常”,那将是不好的-----框架设计师认为当您不在视图层次结构中时,
removeFromSuperview
是不可操作的,您可以用另一种方式进行论证,但这不会改变其他人的想法……10年前,如果我从SuperView中删除一个未添加为子视图的视图,那么从我的角度来看,这不是“坏”编程吗?有没有办法检查一个视图是否已添加为子视图?@Peter:通过查看
view.superview
,您可以很容易地检查它。如果该值为零,则未将其添加到视图中。