0

当使用 Xcode 的分析工具时,我会收到以下内存泄漏警告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];

有人遇到过这个警告吗?解决方案?

谢谢!

4

2 回答 2

0

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

self.contentTableView = [[[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 300) style:UITableViewStyleGrouped] autorelease];  
于 2012-09-25T19:22:21.167 回答
0

好吧,这是一个猜测。我很久没有研究过遗留目标了。我一直在后面的目标上进行部署。但是您可以使用autorelease或手动释放UITableView. 这样的事情可能会奏效,

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

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

[tableView release];

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

于 2012-09-25T19:18:53.673 回答