Iphone 释放tableHeaderView
在我的代码中,我向tableHeaderView添加了一个UIViewIphone 释放tableHeaderView,iphone,ios,ios4,Iphone,Ios,Ios4,在我的代码中,我向tableHeaderView添加了一个UIView self.tableView.tableHeaderView = containerView; 然后我需要释放或禁用这个。我试着用 [self.tableView setTableHeaderView:nil]; [tableView reloadData]; 但它不起作用,我有一个错误: malloc:*对象0x4b1aff0的错误:未分配要释放的指针 *在malloc\u error\u break中设置断点以进行调
self.tableView.tableHeaderView = containerView;
然后我需要释放或禁用这个。我试着用
[self.tableView setTableHeaderView:nil];
[tableView reloadData];
但它不起作用,我有一个错误:
malloc:*对象0x4b1aff0的错误:未分配要释放的指针
*在malloc\u error\u break中设置断点以进行调试
谢谢你的阅读
Tommy错误消息说您的containerView未分配,然后当您尝试将属性设置为nil时,会出现错误。您应该执行以下操作
// First create the containerView
UIView *containerView = [UIView alloc] init..];
// Set it as the table header view (this will retain it)
[self.tableView setTableHeaderView:containerView];
// Now we're done with containerView, so release it:
[containerView release];
你也可以用
UIView *containerView = [UIView alloc] init..] autorelease];
但这样你就不需要最后发布的消息了
如果要“禁用”此标题视图,只需执行以下操作即可:
[self.tableView setTableHeaderView:nil];
[self.tableView reloadData];
它适用于我:
self.tableView.tableHeaderView = nil;
而且
[self.tableView setTableHeaderView:nil];
我想你可能还有另一个问题。可能您释放containerView的次数超出了您应该释放的次数。当我尝试时,出现错误:
EXC\u BAD\u ACCESS
[self.tableView setTableHeaderView:nil];
我改变了:
dispatch_async(dispatch_get_main_queue(), ^{
self.tableView.tableHeaderView = nil;
});
它对我有用。
祝你好运
p/s:我知道这是一个老问题:如果使用self.tableView.tableHeaderView=nil;,它应该直接反映在屏幕上,所以不需要做[tableView reloadData];可能是您在CellForRowAtIndexPath中做错了什么您如何创建
containerView
?UIView*containerView=[[UIView alloc]initWithFrame:CGRectMake(0,0,300,240)]自动删除];我就是这么做的,但我需要释放TableHeaderView。。。比如[self.tableView setTableHeaderView:nil]是的,正如拉斐尔所说,我认为你的问题可能在其他地方。您是否尝试使用NSZombieEnabled?它与self.tableView.tableHeaderView=nil一起工作;但不能使用[self.tableView setTableHeaderView:nil];请尝试发布更多相关代码。主要是关于如何创建tableView和containerView。你说得对!!现在是工作。但我也有EXC_BAD_访问权限,但我认为这是另一个问题!好啊如果需要更多帮助,请发布代码。不要尝试不使用这样的代码:[[UIView alloc]initWithFrame:CGRectMake(0,0,300,240)]autorelease];。。。因为我认为有时候自动释放很难看到,你可能会犯错误,然后使用释放。。。但这只是我不喜欢的东西,没问题