iOS的UICollectionView调用reloadItemsAtIndexPaths出现的crash

在iOS开发中,使用UICollectionView进行局部刷新时遇到一个crash问题,错误信息为attempt to delete item 72 from section 0 which only contains 0 items before the update。原因是先调用了reloadItemsAtIndexPaths:,而此时数据源为空,接着才执行reloadData,导致尝试删除不存在的cell。解决方法是调整顺序,先reloadData生成cell,再进行局部刷新,从而避免crash。参考文章探讨了类似UITableView的crash问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前要

最近在弄那个使用UICollectionView的方法的刷新部分数据源的时候出现了crash,

[_dateCollection reloadItemsAtIndexPaths:tempRefreshIndexPath];

崩溃的信息是 attempt to delete item 72 from section 0 which only contains 0 items before the update,一直不知道什么原因,为什么会执行了delete的方法呢,删除cell的操作呢


原因

看了一份别人写的文章,才知道原因意思就是内部会先删除原来的cell再重新生成cell,所以才会出现delete操作,然而我这个错误的是,原来就没有cell。
这里写图片描述

[self refreshAllSelectIndex:_selectIndex withOldSeletIndex:oldIndex];会调用[_dateCollection reloadItemsAtIndexPaths:tempRefreshIndexPath];这个方法进行局部刷新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值