- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
AViewController * aView = [[AViewController alloc] initWithNibName:@"myNib" bundle:[NSBundle mainBundle]];
return vintagePriceRowView.view;
}
我知道这段代码需要在某个地方发布。但是哪里?如果我将分配的AviewController设置为autorelease,那么触摸视图中的元素会导致“消息发送到解除分配的实例0xfb5780”
Leaks仪器实际上没有泄漏,但显然Clang不喜欢上面的代码。我知道Clang不是福音,只要确定代码中可能出错的一切,但在这种情况下,感觉就像它可能是正确的一样。我已经分配了它,我需要释放它。
关于我做错的任何想法?
答案 0 :(得分:2)
为了提高效率,您应该在需要之前创建将在页脚中使用的视图。也许在tableViewController中的viewDidLoad中创建它并将其存储在成员变量中。
然后在viewForFooter方法中,只返回先前存储的视图。
然后在tableViewController的dealloc方法中,释放视图。
答案 1 :(得分:1)
你需要坚持下去,直到不再需要它为止。
我建议创建一个私有属性,最初将其设置为nil
,然后延迟加载nib并将返回的视图分配给属性。然后在dealloc
或viewDidUnload
中,只需通过设置器将其设置为nil
。
当您将其分配给私人财产时,您当然需要release
或autorelease
,因为设置者会为您保留它。