Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 释放tableHeaderView_Iphone_Ios_Ios4 - Fatal编程技术网

Iphone 释放tableHeaderView

Iphone 释放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中设置断点以进行调

在我的代码中,我向tableHeaderView添加了一个UIView

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];。。。因为我认为有时候自动释放很难看到,你可能会犯错误,然后使用释放。。。但这只是我不喜欢的东西,没问题