• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - UITableView 在快速滚动时崩溃

[复制链接]
菜鸟教程小白 发表于 2022-12-13 08:49:28 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个 TableView 填充从 NSFetchedResultsController 获取的数据。但是,当用户在表格 View 中滚动得太快(通常在表格底部附近)时,应用程序会停止响应。

Xcode 在

中显示一个崩溃断点

- (UITableViewCell *)tableViewUITableView *)tableView cellForRowAtIndexPathNSIndexPath *)indexPath

在我分配单元格属性的那一行:

cell.name.text = [Person firstName:speaker.firstName and LastName:speaker.lastName]; (cell 是 PersonStyleCell,UITableViewCell 的子类)。

编辑

玩弄 NSManagedObject 的错误状态属性,我现在得到了错误:

CoreData could not fulfill a fault for '0x37f8f0 

同样,只有当用户滚动 UITableView 太快时,应用才会崩溃。

知道应用程序崩溃的原因吗?没有内存泄漏,我只在 dealloc 方法中释放 NSFetchedResultsController 对象。可能是什么问题?

我意识到:

 ([(Person*)[self.personArray objectAtIndex:[indexPath row]] faultingState] == 0)

将检查存储在 NSManagedObject 中的数据是否有故障(即尚未“加载”),我认为问题在于它试图使用尚无法访问的数据设置单元格属性。

将“设置单元格属性”函数放在 if 语句中,如果数据没有错误,则仅继续设置单元格属性似乎修复了崩溃,但没有显示数据(我猜它初始化时,数据所有对象都设置为“故障”

我可以使用这个错误状态属性等到数据加载完毕后再设置单元格属性吗?如果有,怎么做?

我希望这些信息能大大简化我的问题



Best Answer-推荐答案


您设置的批量大小是多少?我在使用批量大小为 20 的大量轻量级对象时遇到了这个问题。增加批量大小(对我来说是 60)可以防止崩溃,而不会对滚动性能产生任何不利影响。

关于ios - UITableView 在快速滚动时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7122758/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap