iOS 8:UITableView在heightForRowAtIndexPath上崩溃(在iOS7上运行正常)

时间:2014-09-22 13:13:00

标签: ios objective-c uitableview nsautoreleasepool

使用新发布的iOS8,我在TableViews中遇到过以前不存在的崩溃。

我使用以下代码计算单元格高度。这在iOS7上运行得非常好,但在iOS8上崩溃了。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
  UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];
  cell.frame = CGRectMake(0, 0, tableView.frame.size.width, 0);

  [cell setNeedsUpdateConstraints];
  [cell updateConstraintsIfNeeded];

  CGFloat height = [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
  return height + 1;
}
  

*** - [UITableViewCell release]:发送到解除分配的实例0x7d2e2bb0的消息

当这次崩溃发生时,我得到以下Stacktrace :(对不起,图片,不能复制出来的AppCode文本) Stacktrace

这是仪器输出...... ReleaseRetainCount

之前是否有人见过这种行为,或者对如何防止这种崩溃有所了解?

1 个答案:

答案 0 :(得分:0)

好的,现在就开始工作了。

问题是:在您的自定义UITableViewCell类中,不要设置 self.contentView.translatesAutoresizingMaskIntoConstraints = NO;(即使您使用的是AutoLayout)

我不知道为什么,但是一旦确定,就会发生崩溃。