当我分析它时,会得到以下消息:
方法为以下语句返回一个具有+1保留计数的Objective-C对象
self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
对象泄漏的已分配对象稍后不会在此执行路径中重新引用,并且保留计数为+1
[self.view setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
任何人都知道如何修复这些消息。
谢谢你的帮助。
假设view
是具有retain
属性的属性,self.view
将保留视图,因此initWithFrame
创建的保留是需要释放的额外保留。
示例autorelease
:
UIView *newView = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
更好的是,如果可能的话,使用ARC。ARC适用于iOS 4.x及更高版本,并基于文件进行混合实现。然后,应用程序中没有retain
、release
或autorelease
调用。
self.view是一个在设置时保留的@属性。你需要释放它。
尝试:
UIView *newView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.view = newView;
[newView release];
或
self.view = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];