通过对自身调用 removeFromSuperview 进行自我释放?
Self-deallocating by calling removeFromSuperview on itself?
在自定义 UIView 中调用 removeFromSuperview 作为 [self removeFromSuperview] 是否会像在其超级视图中执行 [self.customView removeFromSuperview] 一样正确地将其自身从其超级视图中删除?
我已经检查过了,它看起来确实是一样的,但我还是想确定一下!
当然可以。 UIView
实例如何接收 removeFromSuperview
消息是无关紧要的——无论它是从实例外部还是在实例内部调用的,它都会做同样的事情。
视图在从父视图中删除后也将以完全相同的方式被释放,只要没有其他强引用。如果需要,您可以通过在视图的子类中实现 dealloc
方法并向其添加 NSLog
或断点来自行测试。
当您可以调用 removeFromSuperview
时唯一值得注意的例外是您应该 永远不要 从视图的 drawRect:
方法中调用它,as stated in the documentation.这样做会导致未定义的行为。
在自定义 UIView 中调用 removeFromSuperview 作为 [self removeFromSuperview] 是否会像在其超级视图中执行 [self.customView removeFromSuperview] 一样正确地将其自身从其超级视图中删除?
我已经检查过了,它看起来确实是一样的,但我还是想确定一下!
当然可以。 UIView
实例如何接收 removeFromSuperview
消息是无关紧要的——无论它是从实例外部还是在实例内部调用的,它都会做同样的事情。
视图在从父视图中删除后也将以完全相同的方式被释放,只要没有其他强引用。如果需要,您可以通过在视图的子类中实现 dealloc
方法并向其添加 NSLog
或断点来自行测试。
当您可以调用 removeFromSuperview
时唯一值得注意的例外是您应该 永远不要 从视图的 drawRect:
方法中调用它,as stated in the documentation.这样做会导致未定义的行为。