我是否需要从dealloc中的超级视图中移除视图?
问题描述:
如果我分配/初始化视图并将其添加到代码中的另一个视图(我没有使用xib) - 当包含UIViewController的dealloc消息发送时,是否需要删除它?我在某些地方看过这些代码,并想知道在某些情况下是否需要释放内存?我是否需要从dealloc中的超级视图中移除视图?
感谢, 马克
答
如果你这样做,
UIView *v = [[UIView alloc] init];
[self.view addSubview:v];
[v release];
或
UIView *v = [[[UIView alloc] init] autorelease];
[self.view addSubview:v];
,该v
将被释放时,其父视图释放;
当父视图使用addSubview
时,它将保留子视图,并在释放时释放子视图。
答
这是没有必要的。所有UIView
子类都拥有subviews
数组,它在最终的UIView
dealloc消息中释放,释放您的视图。
如果这是一个新项目,您应该考虑使用ARC。否则下面的答案是正确的。 – 2012-03-05 10:08:16