我应该调用removeFromSuperview还是释放得很好?

时间:2011-09-21 02:45:12

标签: iphone ios iphone-sdk-3.0 uikit

我在创建UITableViewCell的子类时使用addSubview方法添加子视图。

然后,当我不再需要视图时,我在dealloc方法中释放了它。 我的问题是发布视图的最佳方式是什么?

[myView release]是否足够,或者我应该致电:

[myView removeFromSuperview];
[myView release];

或只是[myView removeFromSuperview];

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

简单规则:如果保留它,则必须将其释放。

我假设你说你不再想要屏幕上的视图了。比你必须打电话给removeFromSuperView,否则超级视图仍保留视图并释放它只会将所有权转移到超级视图。

答案 1 :(得分:0)

这取决于您创建视图的方式。传入时,应确保不拥有子视图。

我将在这里走通用路线。

UIView * mySubview = [[UIView alloc] initWithFrame:frame];
[superView addSubview:mySubview];
[mySubview release];

现在你的子视图在你想要的地方,但是superView拥有它。 如果您的superView位于视图层次结构中而您自己并不拥有它,那么当您的superView从视图层次结构中删除时,它的子视图将会被各自的所有者发布。