美文网首页iOS/Swift/Objc
tableview高度返回一个负值导致的crash

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

作者: 雨天多久就 | 来源:发表于2017-12-09 15:08 被阅读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

    解决方法

    • 1. 这两个预估高度的方法,干脆不要实现
    • 2. 返回一个大于1.0的数值。(感觉写大一点,比较保险)

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

    相关文章

      网友评论

        本文标题:tableview高度返回一个负值导致的crash

        本文链接:https://www.haomeiwen.com/subject/rrouixtx.html