macos - 滚动时 NSTableView 非常滞后

标签 macos performance swift core-data nstableview

在我的 OS X 应用程序中,它使用 Core Data 我的表格 View 在滚动时非常滞后,我在那里只有大约 100 多行......我正在使用 Cocoa 绑定(bind) NSArrayController 在 TableView 中显示我的数据。

我只有一个具有 13 个属性的实体,但该 TableView / ScrollView 仍然非常滞后。

是否存在导致该行为的一些常见错误/错误编码?滚动时我的 CPU 使用率约为 85%。

有人知道这是为什么吗?我正在使用 Xcode 7 发布版本。

更新:

仪器看起来像这样(我第一次使用它): enter image description here

更新 2:我使用 NSVisualEffectView 并重写 allowsVibrancy 以返回 true,因此我让表格 View 的替代行颜色与我的另一个项目中的一样 Github- Debter

如果我为我的 View 启用核心动画层,它对滚动有很大帮助,但我的 Storyboard开始做一些陈旧的东西,我不能再处理任何与 UI 相关的东西了。

最佳答案

如果没有看到您的 UITableView delegatedata source 的代码,就很难知道确切的问题。

一些坏习惯是:

  • 通过任何 UITableViewDataSource 方法或在呈现 UITableViewCell 时从 CoreData 加载数据。
  • 在主线程上加载图像或在后台加载图像而不将它们缓存在本地存储中。
  • tableViewCellForIndexPath 或其他数据源方法上执行复杂的操作(如图像处理)。

可能会帮助您找到问题的一些问题:

  • 您使用的是 NSFetchedResultsController 吗?如果您的数据集很长(尽管您提到不是),它可能会提高性能。
  • 您检查过线程数了吗?如果它太高,您可能需要使用 NSOperationQueue 来限制您的后台任务。

关于macos - 滚动时 NSTableView 非常滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32634685/

相关文章:

java - GLSL 着色器无法在 Mac 上运行

performance - blazemeter 如何计算 hits/sec?

java - 读取所有字符时是否有理由使用 BufferedReader 而不是 InputStreamReader?

ios - libc++abi.dylib : terminating with uncaught exception of type NSException on iOS 7. 1

xcode - 准备将按钮命令发送到另一个 ViewController Swift

macOS:如何检测应用程序的查找器图标何时打开?

javascript - grunt.js(node.js 构建工具)不会创建目录或文件。与权限有关吗?

macos - 使用 AppleScript 关闭 FireFox 中的特定选项卡

python - 在没有numpy的情况下计算python中一组坐标元组的质心的最快方法

swift - windowShouldClose 报告未解析的标识符