Gav*_*vin 14 macos cocoa scroll nstableview swift
我是OS X Cocoa编程的新手,但已经决定使用新的Swift语言.
我有NSTableView1500行(将更多)和7列.有一个复选框列,其余是文本字段,一个带有日期格式,另一个带有货币格式器.我首先将其设置为基于单元格.滚动是黄油平滑的(我甚至做了一个测试,增加了100万行,仍然很平滑).这是在小牛队.
然后我升级到Yosemite,滚动性能明显降低.在表视图上启用Core动画层复选框改进了这一点,但仍然比在小牛队中更糟糕.
在我试图提高优胜美地的滚动性能时,我遇到了"基于视图"的NSTableViews.从文档中可以看出,基本上不应该使用基于单元格的表视图,并且只支持旧项目.
因此,我将我的表转换为基于视图的表视图.样本简单概念,没什么复杂的.滚动表现绝对可怕.如果你滚得非常慢,它就足够平滑,但是一旦你开始滚动得更快,就像它没有足够的缓冲一样,它会开始出现口吃和抽搐.此外,当NSTableview填充时,对焦和散焦窗口需要一秒钟或更长时间(我再次在小牛队中尝试过这个并不存在,滚动也好一点,但仍然没有接近基于单元格).
基于视图NSTableviews总是不利于滚动性能吗?如果是这样,苹果为什么建议使用基于细胞的NSTableviews.
此外,一些应用程序,如safari和Reeder2即使在约塞米蒂也有黄油平滑滚动.他们是如何做到这一点的?
我是否遗漏了某些东西,或者OS X的性能是否会随着每件新事物而下地狱?即
小牛队>优胜美地队
基于单元格>基于视图
旧>新
任何帮助深表感谢.谢谢!
最近,他们引入了称为“重用队列”的概念,其中只有当前可见的行实际上存在于表中。滚动时离开剪辑的行将被新引入的行替换。这是为了增强性能而引入的。但考虑到百万 x 7 视图,我想可能会在重用队列中浪费大量 CPU 周期。
与视图相比,单元的重量也很轻。
如果可能的话,您可以考虑将单个表视图重组为多个表视图。实际上,人类需要在头脑中至少使用一些简单的谓词来查看数据。例如,在组织中您可能想要查看
而不是一次查看所有员工详细信息。
因此,仅使用所需的信息来初始化表视图即可增强性能和用户体验。