发布tableHeaderView

时间:2011-07-05 12:19:40

标签: iphone ios ios4

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

self.tableView.tableHeaderView = containerView;

然后我需要释放或禁用这个。我试着用

[self.tableView setTableHeaderView:nil];
[tableView reloadData];

但它不起作用,我有这个错误:

malloc: *对象0x4b1aff0的错误:未释放指针被释放 * 在malloc_error_break中设置断点以进行调试

感谢您的阅读,

托米

4 个答案:

答案 0 :(得分:1)

我在尝试

时遇到错误:EXC_BAD_ACCESS
[self.tableView setTableHeaderView:nil];

我改变了:

dispatch_async(dispatch_get_main_queue(), ^{
   self.tableView.tableHeaderView = nil;
});

它对我有用。 祝你好运!

P / s:我知道这是个老问题:D

答案 1 :(得分:0)

错误消息显示您的containerView未分配,然后当您尝试将该属性设置为nil时,您会收到错误。

答案 2 :(得分:0)

您应该执行类似

的操作
// 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];

答案 3 :(得分:0)

它对我有用:

self.tableView.tableHeaderView = nil;

以及

[self.tableView setTableHeaderView:nil];

我想你可能还有另外一个问题。也许你正在发布你的容器视图。