objective-c - 过度使用 NSView -> 替代方案?

标签 objective-c macos performance cocoa nsview

我的应用程序遇到一些性能问题:

加载时间超过 2 秒 -> 所以我立即查看了 Apple 文档

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CocoaPerformance/Articles/CustomViews.html#//apple_ref/doc/uid/TP40001443-CJBJIFGC

在底部名为“避免过度使用 View ”的部分中,我感到非常困惑:

我确实添加了很多NSViews(我猜我过度使用了它们)。

” 相反,您应该考虑编写自己的自定义类,这些类可以由更高级别的 NSView 子类管理。然后可以优化 NSView 子类的绘图代码来处理您的自定义对象。 ”

我的问题是:

如何编写可以由更高级别的 NSView 子类管理的自己的自定义类 -> 任何示例?

我唯一想到的是CALayer

添加 CALayer 子类比添加 NSView 更好吗? 它会增加我糟糕的表现吗?

或者有什么新东西需要学习?

编辑:

目前,我有 NSView,其中我添加了 15 个 NSView 作为 subview ,我可以添加 15CALayer 来代替:-/

最佳答案

您对您的应用程序进行过概要分析吗?在分解 View 层次结构之前,使用带有时间分析器的工具来找出时间实际花在哪里。

CALayers 比 UIView 更高效,如果不需要,建议避免使用 drawRect,但在进行重写之前,您需要知道您的应用程序实际将时间花在哪里。

关于objective-c - 过度使用 NSView -> 替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30832060/

相关文章:

ios - 如何在 iOS 中检测我的应用程序的 VPN 是否已连接?

ios - Objective-C 中的用户自定义裁剪

performance - CSS3 过渡 : Is "transition: all" slower than "transition: x"?

python - 如何卸载 Anaconda(Mac)

java - 与 Java 7 相比,Java 8 ScriptEngine 的主要性能问题

java - 使用实例变量与将数据作为参数传递

objective-c - 捕获动态按钮点击 ios

ios - 每次重新加载表格时,自定义 UITableViewCell 中的 UILabel 都会向上移动

java - 使用 Java 编写 Mac 应用程序包/文件夹

Cocoa - 可以启动、暂停、恢复的计时器对象?