Macos NSTableView在滚动时非常滞后
在我的OS X应用程序中,它使用Macos NSTableView在滚动时非常滞后,macos,performance,swift,core-data,nstableview,Macos,Performance,Swift,Core Data,Nstableview,在我的OS X应用程序中,它使用核心数据我的表视图在滚动时非常滞后,我在那里只有大约100多行……我使用NSArrayController的Cocoa绑定在表视图中显示我的数据 我只有一个具有13个属性的实体,但表视图/滚动视图仍然非常滞后 是否存在一些常见的错误/错误编码是什么导致了这种行为?当我滚动时,我的CPU使用率约为85% 有人知道为什么吗?我使用的是Xcode 7发布版 更新: 仪器如下所示(我第一次使用): 更新2:我使用NSVisualEffectView并覆盖AllowsVi
核心数据
我的表视图在滚动时非常滞后,我在那里只有大约100多行……我使用NSArrayController
的Cocoa绑定在表视图中显示我的数据
我只有一个具有13个属性的实体,但表视图/滚动视图仍然非常滞后
是否存在一些常见的错误/错误编码是什么导致了这种行为?当我滚动时,我的CPU使用率约为85%
有人知道为什么吗?我使用的是Xcode 7发布版
更新:
仪器如下所示(我第一次使用):
更新2:我使用NSVisualEffectView并覆盖AllowsVibrance以返回true,因此我得到的表视图的替代行颜色与我的另一个项目中的相同
如果我为我的视图启用核心动画层,它对滚动有很大帮助,但是我的故事板开始做一些磨损的事情,我无法再很好地处理任何与UI相关的事情。如果看不到您的
UITableView
代理和数据源的代码,就很难知道确切的问题
一些坏习惯是:
- 从任何
UITableViewDataSource
方法或呈现UITableViewCell
时从CoreData加载数据
- 在主线程上加载图像或在后台加载图像,而不在本地存储上缓存它们
- 在
tableViewCellForIndexPath
或其他数据源方法上执行复杂操作(如图像处理)
一些可能有助于您找到问题的问题:
- 您是否正在使用NSFetchedResultsController
?如果您的数据集很长(尽管您提到的不是),则可以提高性能
你检查过线程的数量了吗?如果太高,您可能需要使用NSOperationQueue
来限制后台任务
使用Xcode的Instruments工具,您可以分析正在运行的应用程序,查看它在哪里花费时间。我更新了答案并发布了Instruments的屏幕截图……您能从中找出什么吗?您使用的是CALayers,您的Mac机型是什么15“Macbook Pro Retina,2013年初如果您正在进行核心数据提取以填充表格,这可能就是问题所在。是这样吗?尝试使用instruments的核心数据工具。我的应用程序是针对OS X的,当view controller加载并存储数据到我的阵列并从那里填充我的表视图时,我会发出一个fetchrequest。当我不使用NSVisualEffectView时,我的滚动很好,一切正常,但visualeffectview会导致问题。为我所有的UIKit
类致歉:)。您正在对每个表视图行执行视觉效果吗?也许一个好主意是将整个表视图嵌入到视觉效果视图中,然后在行上使用不透明度的平面颜色来创建斑马线效果。我在整个视图中都有视觉效果。现在,我已经把它去掉了,因为这是一次滞后的经历。