泄漏的UITableView对象:此执行路径中稍后未引用已分配的对象,并且保留计数为+1

时间:2012-09-25 19:04:26

标签: iphone objective-c memory-management memory-leaks

使用Xcode的Analyze工具时,我收到以下UITableView分配的内存泄漏警告 -

Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1

self.contentTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 300) style:UITableViewStyleGrouped];  
self.contentTableView.delegate = self;
self.contentTableView.dataSource = self;
self.contentTableView.scrollEnabled = NO;
self.contentTableView.backgroundColor = [AppDelegate appMainColor];
self.contentTableView.separatorColor = [UIColor whiteColor];
self.contentTableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
[self.view addSubview:self.contentTableView];

是否有人遇到此警告?溶液

谢谢!

2 个答案:

答案 0 :(得分:0)

好的,这是猜测。我很长一段时间没有研究过遗留目标。我一直在后来的目标上部署。但您可以使用autorelease或手动释放UITableView。这样的事可能有用,

self.contentTableView = [[[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 300) style:UITableViewStyleGrouped] autorelease];

如果您使用的是属性,则在dealloc方法中释放

[tableView release];

注意:我很长一段时间没有使用非ARC环境,我的语法可能(很可能)是错误的,你必须解决语法问题。

答案 1 :(得分:0)

由于ARC不适合您,因此您需要遵循代码中的所有权规则。您已使用alloc创建了一个对象,因此您必须确保它稍后获得release。一种简单的方法是在实例化时将其发送给autorelease并将其分配给您的财产,例如:

self.contentTableView = [[[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 300) style:UITableViewStyleGrouped] autorelease];