2009-07-11 130 views
1
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { 
    AViewController * aView = [[AViewController alloc] initWithNibName:@"myNib" bundle:[NSBundle mainBundle]];  
    return vintagePriceRowView.view; 
} 

我知道这段代码需要释放...某处。但是哪里?如果我将分配的AviewController设置为自动释放,那么触摸视图中的元素将导致“发送到释放实例0xfb5780的消息”将元素放置到UITableView页脚中,何时释放它们?

泄漏仪器实际上并未显示泄漏,但显然Clang不喜欢上述代码。我知道Clang不是福音,只要确定代码中可能出现错误的所有内容即可,但在这种情况下,感觉可能是正确的。我已经分配了它,我需要释放它。

关于我在做什么的错误?

回答

2

为了提高效率,您应该创建一个视图,在需要之前在页脚中使用该视图。也许在你的tableViewController的viewDidLoad中创建它,并将它存储在一个成员变量中。

然后在您的viewForFooter方法中,只需返回先前存储的视图。

然后在你的tableViewController的dealloc方法中,释放视图。

1

你需要坚持到它不再需要。

我建议制作一个私有属性,最初将其设置为nil,然后延迟加载该笔尖并将返回的视图分配给该属性。然后在deallocviewDidUnload中通过设置器简单地将其设置为nil

一旦您将其分配给私有属性,您将需要releaseautorelease,因为setter将为您保留它。

相关问题