对象泄漏:分配的对象以后不会被引用



当我分析它时,会得到以下消息:

方法为以下语句返回一个具有+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及更高版本,并基于文件进行混合实现。然后,应用程序中没有retainreleaseautorelease调用。

self.view是一个在设置时保留的@属性。你需要释放它。

尝试:

UIView *newView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
self.view = newView; 
[newView release];

self.view = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 

相关内容

最新更新