将 NSView 添加到 ScreenSaver 视图时出现性能问题

Performance issues when adding NSViews to ScreenSaver view

我正在尝试一个基本实验,我将正方形网格添加到 macOS 屏幕保护程序视图(通过 Xcode 模板创建)。我 运行 使用性能相当不错的 MacBook Pro,但出于某种原因,添加我的网格(由约 900 个 NSView 对象组成)完全锁定了我的系统 — 屏幕保护程序挂起。

这不是不合理的观看次数,对吧?有趣的是,我在 macOS 应用程序中尝试了完全相同的布局(在其 NSWindow 中绘制),并且性能完全没问题。

有什么区别?

导致性能问题的原因是所有视图都是图层支持的。一旦我停止请求视图具有图层,性能就会显着提高。

到目前为止,我还使用 CAShapeLayer 来改进动画性能。