我相信这是一个通用错误,但我需要帮助来克服它。 EXC_BAD_ACCESS 表视图,ios 内容

Posted

技术标签:

【中文标题】我相信这是一个通用错误,但我需要帮助来克服它。 EXC_BAD_ACCESS 表视图,ios 内容【英文标题】:I believe this is a generic error but I need help getting past it. EXC_BAD_ACCESS table view, ios content 【发布时间】:2012-12-31 20:53:49 【问题描述】:

我已经环顾四周,这个错误似乎与完全不同的问题有关。这是我的代码片段,如果您可能需要更多,请告诉我。这是使用 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: 找到我的答案here

【问题讨论】:

完整的错误信息和回溯是什么?如果您尚未添加异常断点以获得更好的错误信息。 可能是您从numberOfSectionsInTableView: 返回的部分数量错误?这会导致您超出表格范围。 完整的消息是Thread 1: EXC_BAD_ACCESS(code=2, address=0xbf7fffc)。我的 numberOfSectionsInTableView 只是 return 2 我认为numberOfRowsInSection: 是这里的问题,而不是numberOfSectionsInTableView:,因为在崩溃中出现的是前者。 那个是做什么的? 它有点复杂,但我很肯定这部分有效。我在搞砸的方法之前输入了NSLog(@"row: %i, section: %i", [indexPath row], [indexPath section]);。它只是一遍又一遍地打印出row: 0, section: 1 数百次。 【参考方案1】:

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

【讨论】:

所以我输入了两个 NSLog 描述,在方法调用的每一次传递中都给出了两个地址。 tableView: <UITableView: 0x7b76800; frame = (0 20; 320 548); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0x7122e40>; layer = <CALayer: 0x7121d40>; contentOffset: 0, 0>. 在这些情况下它会崩溃吗?如果是这样,也许表格视图或索引路径中的某些内容不好?【参考方案2】:

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

【讨论】:

我修改了本地名称,但仍然遇到同样的问题。不过,这是个好建议;我没想到。【参考方案3】:

希望你的代码中的问题是

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

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

【讨论】:

以上是关于我相信这是一个通用错误,但我需要帮助来克服它。 EXC_BAD_ACCESS 表视图,ios 内容的主要内容,如果未能解决你的问题,请参考以下文章

需要帮助让按钮在 Adob​​e Flash 中播放多种声音

protobuf-net 出现“已添加具有相同密钥的项目”错误

如何克服 python 多处理中的开销?

每个控制变量必须是变量或对象

您如何克服 HTML 表单嵌套限制?

Huggingface Bert:输出打印