gpt4 book ai didi

ios - UITableView reloadData 阻塞 UI,每秒更新很多

转载 作者:行者123 更新时间:2023-11-29 10:37:33 26 4
gpt4 key购买 nike

我有一个可以下载某些文件的应用程序。这些文件显示在 UITableView 中,当点击时,它们开始下载。

我想在单元格中显示下载进度(例如,以百分比形式)。当下载进度更新时,我的代码当前会触发通知。

问题是这些进度更新每秒被触发很多(数百?)次。如果我使用 [tableView reloadData],甚至 [tableView reloadRowsAtIndexPaths:...],一旦下载开始,UI 就会像疯了一样滞后,因为它被调用得太频繁了.

除此之外,我的代码非常少。我没有使用任何不常见的 UITableView 委托(delegate)方法,并且我尝试消除除更新 cellForRowAtIndexPath: 中的“下载”标签之外的所有内容 - 但它仍然滞后很多!

我有哪些选择?我可能会创建一个计时器,每隔一秒左右更新一次 UI,以显示下载进度,但这看起来很老套。用户界面可能会好得多!有没有任何方法可以让我的下载标签立即更新而不会使我的 UI 滞后?

最佳答案

听起来您需要放慢通知的速度。

假设进度介于 0 和 1 之间,在触发通知的方法中,使用类似于以下内容的内容:

if (floorf(progress*100) == progress*100) {
// send notification
}

这只会在进度达到 1%、2% 等时发送通知以刷新单元格

此外,在 UITableView 中,尝试只重新加载可见单元格:

if ([[self.tableView indexPathsForVisibleRows] containsObject:indexPath]) {
[self.tableView reloadRowsAtIndexPath:@[ indexPath ]];
}

关于ios - UITableView reloadData 阻塞 UI,每秒更新很多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26148910/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com