iOS/Swift/Objc

tableview高度返回一个负值导致的crash

2017-12-09  本文已影响174人  雨天多久就

记录开发中遇到的一个奇葩问题:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'table view row height must not be negative - provided height for index path (<NSIndexPath: 0xc000000000000816> {length = 2, path = 8 - 0}) is -0.010000'

iOS 11系统的 6sPlus 和 模拟器上从来没有出现,在一个5s的10.0系统的机器上出现了。

从日志看,很简单。在tableView的row高度返回方法里,返回了一个负值。然后就去看看- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath这个方法的具体实现,应该很简单。但是令我无语的事情出现了。

WechatIMG26.jpeg

所以,我怀疑这是系统的bug。

问题所在

其实问题的出现原因是:


WechatIMG27.jpeg

这里我实现了一个预估高度返回。 我试验过,方法的高度如果返回小于等于1.0,就会出现crash

另外,对于区头和区尾的预估高度,也不能返回小于等于1.0

解决方法

写到这里,其实还是不知道为什么会出现crash,希望有知道的出来给大家讲讲……

上一篇 下一篇

猜你喜欢

热点阅读