如何从屏幕上删除UIView对象?

时间:2011-10-11 14:27:41

标签: iphone ipad

我创建了一个示例应用程序,其中我创建了一些继承自NSObject类的类,用于定义对象的不同属性和属性。现在我有一个UIView的子类,并且能够在我的iphone屏幕中显示该对象。

现在我有一个问题,每当我想要删除三角形时,我通常会调用[self removeFromSuperview];并从屏幕上删除该视图。

但它只是从屏幕上移除视图而不是完全删除对象。

如何完全删除对象?

1 个答案:

答案 0 :(得分:2)

从我的描述中收集到的内容 - 如何:

[self removeFromSuperview];
[self release];

这有用吗?或者,您应该将这种逻辑放在视图控制器中。然后,您是否有对象(比如myObject)的引用,然后使用:

[myObject removeFromSuperview];
[myObject release];

从超级视图中删除并不意味着删除此对象。您的对象可以在没有连接到UIView层次结构的情况下生存。

编辑:(以充实Peter Deweese的评论)

创建UIView时,您可以这样做:

MyView* view = [[MyView alloc] initWithFrame:myViewRect];
[mySuperView addChild:view];
[view release];

这意味着您不再拥有视图,但超级视图确实如此。超级视图在作为子项添加时保留您的视图,并且您在发布时放弃它。以后,当你这样做时:

[self removeFromSuperview];

保留计数将降至0,您的对象将自动删除。

好主意彼得!

相关问题