2011-10-25 21 views
1

何时必须在以下代码中发布UIViewUIView内存版本

UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(20, 10, 
120.0, 100)]; 

return headerView; 

感谢所有帮助

enter image description here

+0

发布提问(当你张贴问题StackOverflow的通知您有关)之前,请务必研究。这个问题已经被问了好几次了。 – zakishaheen

回答

3

这取决于你将如何使用视图。如果将从该方法返回的视图分配给某个对象(例如指定给UIViewController)并且该对象保留该视图,则应该在上述函数中自动重新使用该视图。这样你就可以确保它在方法循环结束后自动释放,并且它还会活得足够长,以便对象保留它。因此,代码将是这样的:

UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(20, 10, 
120.0, 100)]; 
[headerView autorelese]; 
return headerView; 

对于前:

myViewController.view=theMethodThatReturnsView;//which is the above method 
+0

请看我附上的图片显示我收到的错误 – user198725878

+0

是的,在上图中,分析仪警告你不要自动释放它。如果您在返回之前没有自动释放它,那么除非您卸载视图控制器的视图,否则您将永远没有机会释放它。但是,除非内存不足,否则这不会导致任何错误。只需添加autorelese行和I我绝对相信这个警告将会消失。 –

+0

你是这样回来[headerView autorelease];并警告已经消失了..感谢你的家伙 – user198725878