1

我环顾四周,这个错误似乎与完全不同的问题有关。这是我的代码片段,如果您可能需要更多,请告诉我。这是使用 using 设置表格最后一个单元格的大小UITableView

- (CGFloat)tableView:(UITableView *)tableView
 heightForRowAtIndexPath:(NSIndexPath *)indexPath
 {
     int returnValue = 44;
     int numRows = [tableView numberOfRowsInSection:[indexPath section]];
    if (!([indexPath row] ==  numRows - 1)) {
        returnValue = 60;
    }
    return returnValue;
 }

我已经注释掉了代码中的所有行,以发现[tableView numberOfRowsInSection:[indexPath section]]抛出错误。有任何想法吗?

编辑:看起来每次您调用 tableView 时,它都会重绘所有调用此方法的单元格,该方法调用此方法令人作呕。我在该方法的文档中找到了这一点:

“每次显示表视图时,它tableView:heightForRowAtIndexPath:都会为其每一行调用委托,这可能会导致具有大量行(大约 1000 或更多)的表视图出现严重的性能问题。”

这是否意味着我不能调用这些方法?

编辑2:在这里找到我的答案

4

3 回答 3

0

希望您的代码中的问题是

int numRows = [tableView numberOfRowsInSection:[indexPath section]];

希望在部分中设置行数,您可能有一些数组,您正在返回一些静态值的计数。因此,要获取行数,请使用该数组计数或该静态值。希望它可以解决您的问题。

于 2013-01-01T01:10:21.813 回答
0

您是否在 .h 文件中声明了 tableView 的任何属性。如果是这样,您可以尝试在函数中修改本地 UITableView 变量的名称。除此之外,我认为 Peter 关于 numberOfSectionsInTableView: 返回值可能是正确的。

于 2012-12-31T21:30:57.163 回答
0

该错误始终表明一件事:您的应用程序试图访问它无权访问的内存。这通常会转化为您的应用程序试图取消引用错误的指针。在这种情况下,坏指针是tableViewor indexPath。检查它们是否为 NULL 或者它们是否已经被释放(打开 NSZombies 可以帮助查看它们是否已经被释放)。

于 2012-12-31T21:05:22.187 回答