释放UIView会自动调用removeFromSuperView吗?

时间:2011-11-07 22:50:25

标签: iphone ios cocoa-touch uiview

我看到这个问题已被反过来问了,我的问题是如果我发布了一个有超级视图的UIView,调用[myView release]会不会通过调用[removeFromSuperview]进行清理?我猜它确实如此,因为我没有看到任何泄漏,但我想确定。

3 个答案:

答案 0 :(得分:1)

除非您在用户仍在查看时需要从其超级视图中删除该视图,否则无需调用removeFromSuperview。换句话说,除非您在滚动视图中排队大量图像或具有某种性质,否则将其用作演示工具而不是内存管理工具。除此之外,超级视图在发布时管理他们的子视图。

此外,如果您保留在视图控制器中并删除已保留的视图,则不会释放该视图。在静态视图控制器中释放视图也不会将其从超级视图中删除(除非您已将其子类化,否则将其删除)。

答案 1 :(得分:1)

不,它没有。

您可能没有泄漏,因为泄漏意味着未引用的指针,并且视图仍将由其父级引用。 (当父母被释放时,它将摆脱孩子。)

答案 2 :(得分:1)

在UIView类参考文档中

 addSubview:

 Adds a view to the end of the receiver’s list of subviews.
 (void)addSubview:(UIView *)view Parameters

 view

 The view to be added. **This view is retained by the receiver**. After being added, this view appears on top of any other subviews.

释放UIView仅影响引用计数。如果引用计数为零,则将其取消分配。否则,它被认为是由他人持有,直到他们全部释放它。