我创建了一个示例应用程序,其中我创建了一些继承自NSObject
类的类,用于定义对象的不同属性和属性。现在我有一个UIView
的子类,并且能够在我的iphone屏幕中显示该对象。
现在我有一个问题,每当我想要删除三角形时,我通常会调用[self removeFromSuperview];
并从屏幕上删除该视图。
但它只是从屏幕上移除视图而不是完全删除对象。
如何完全删除对象?
答案 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,您的对象将自动删除。
好主意彼得!