何时必须在以下代码中发布UIView
?UIView内存版本
UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(20, 10,
120.0, 100)];
return headerView;
感谢所有帮助
何时必须在以下代码中发布UIView
?UIView内存版本
UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(20, 10,
120.0, 100)];
return headerView;
感谢所有帮助
这取决于你将如何使用视图。如果将从该方法返回的视图分配给某个对象(例如指定给UIViewController)并且该对象保留该视图,则应该在上述函数中自动重新使用该视图。这样你就可以确保它在方法循环结束后自动释放,并且它还会活得足够长,以便对象保留它。因此,代码将是这样的:
UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(20, 10,
120.0, 100)];
[headerView autorelese];
return headerView;
对于前:
myViewController.view=theMethodThatReturnsView;//which is the above method
请看我附上的图片显示我收到的错误 – user198725878
是的,在上图中,分析仪警告你不要自动释放它。如果您在返回之前没有自动释放它,那么除非您卸载视图控制器的视图,否则您将永远没有机会释放它。但是,除非内存不足,否则这不会导致任何错误。只需添加autorelese行和I我绝对相信这个警告将会消失。 –
你是这样回来[headerView autorelease];并警告已经消失了..感谢你的家伙 – user198725878
回归其作为自动释放。使用这个功能的人会照顾它的所有权。 See this post。
发布提问(当你张贴问题StackOverflow的通知您有关)之前,请务必研究。这个问题已经被问了好几次了。 – zakishaheen