美文网首页
Assertion failure in -[UICollect

Assertion failure in -[UICollect

作者: 过雨烟蒙 | 来源:发表于2016-10-11 19:55 被阅读0次

    date: 2016-10-11 19:56:29

    Overview

    最近发现一个好玩的问题,我在一个tableView的cell里面写了一个collectionView来加载图片。因为tableViewCell复用的缘故,每次复用cell的时候就会去获取cell对应数据,然后调用collectionView的reloadData方法。滑动tableVIew到固定一行的时候控制台就会输出以下bug 日志,然后程序就会crash.在stackoverflow上面也看到别人有相同的问题,有人提出是collectionView reload数据太频繁了,但是我发现就算是慢慢滑动,到固定某一个cell的时候也会报错,也就是说不是因为reload太频繁的缘故。但是在找不到其他原因的情况下我试着把reloadData方法卸载GCD异步线程里面发现问题真的不再复现了。很奇怪,哪位仁兄知道原因的帮忙解答一下。

    bug日志

    ** Assertion failure in -[UICollectionViewData validateLayoutInRect:], 
    /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-3599.6/UICollectionViewData.m:433**
    

    解决方案

    方案一:这种解方案在iPhone6s上是可以的运行的,但是在iPhone5上面还是会报错

    // [_collectionView reloadData];
    
    //在主线程中更新屏幕
    dispatch_async(dispatch_get_main_queue(), ^{
        [_collectionView reloadData];
    });
    

    方案二:以下解决方案在iPhone5上也可以运行,不会报错

    // [_collectionView reloadData];
    
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    [_collectionView reloadData];
    });
    
    

    相关文章

      网友评论

          本文标题:Assertion failure in -[UICollect

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