使用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];
是否有人遇到此警告?溶液
谢谢!
答案 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];