答案 0 :(得分:0)
您需要向我们展示如何以及何时创建自定义视图。请注意:每次该方法调用viewForHeaderInSection时,您应始终创建“新的”自定义视图,然后在返回时自动释放它们或在调用[tableView reloadData]之前为每个“标题”分配和创建自定义视图,然后稍后释放它们。您看到的这个错误很可能是由于您自己使用'autorelease'返回自定义视图,然后在某个时候尝试重新使用该对象。
当您尝试释放已释放的对象或尝试访问已释放的对象(现在是指向内存的其他部分的悬空指针)时,通常会发生此错误。例如,这会导致此问题:
您可以在'viewDidLoad'中创建自定义视图,如下所示:
myView = [[CustomView alloc] initWithFrame ....]; ....
在viewForHeaderInSection中,您将返回如下:
返回[myView autorelease];
或类似的东西:
viewDidLoad:
myView = [[CustomView alloc] initWithFrame....];
....
cellForRow:
cell.contentView = myView;
[myView autorelease];
然后再次返回viewForHeaderInSection: 返回myView;
换句话说,这与你如何分配它,你如何'重新使用它'或你如何自动释放它有关。只需确保您预先创建此视图并在完成viewController被取消分配时(或在下次调用[tableView reloadData]之前)释放,或者在每次调用viewForHeaderInSection时创建一个新的自定义视图,如下所示:
- (UIView*) viewForHeaderInSection:
return [[[CustomView alloc] init] autorelease];
答案 1 :(得分:0)
你可能会比你需要的更多地返回noOfSection。看看是否是这种情况。尝试检查那里有多少部分。