gpt4 book ai didi

swift - UITableView 中 CPU 使用率异常高

转载 作者:行者123 更新时间:2023-11-30 12:34:22 26 4
gpt4 key购买 nike

我正在创建一个锻炼应用程序,并创建了一个 UITableview 来显示所有可用的锻炼(大约 120 个)。我正在使用 NSFetchedResultsController 从 CoreData 获取数据。我遇到的问题是,当我滚动表格时,CPU 使用率非常高。它的范围从 50%-100% 取决于我滚动的速度。

这是我的行单元格:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as? ExerciseCell else {fatalError("Couldn't load appropriate index path for custom cell")}

let exercise = self.fetchedResultsController.object(at: indexPath)
cell.exerciseTitle.text = exercise.name

if let getImage = exercise.image2 {
let image = UIImage(data: getImage as Data)

cell.exerciseImage.image = image

} else {
cell.exerciseImage.image = nil
}

return cell
}

我不确定这是否与我转换图像的方式有关?或者我如何设置 CoreData?任何帮助都是极好的。谢谢。

最佳答案

看起来您可能正在 UIImage 上做昂贵的工作。

为了实现无缝滚动,您应该遵循一些准则。

一条经验法则:尝试使 tableView:cellForRowAtIndexPath 方法尽快返回单元格实例

  • 线程:尝试在后台线程而不是主线程中进行获取或任何计算。在这里您正在创建 UIImage 实例
  • 渲染:不要在 tableView:cellForRowAtIndexPath 中执行数据绑定(bind),而是执行 tableView:willDisplayCell:forRowAtIndexPath 中的步骤
  • 动画:一些令人大开眼界的核心显卡性能问题。引用这个:http://asyncdisplaykit.org/docs/corner-rounding.html
  • 缓存:创建您自己的有效缓存机制。 IE。
    • 更好的方法来访问 coreData 结果,以便之后可以快速访问
    • 单元格的高度计算
  • 对于动态高度单元格,不要使用绑定(bind)数据初始化单元格实例来获取其高度,而是使用类方法,该方法根据传递的宽度和要显示的数据返回高度(单元格适配器)

关于swift - UITableView 中 CPU 使用率异常高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43070776/

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