首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >减少核心动画内存使用的技巧

减少核心动画内存使用的技巧
EN

Stack Overflow用户
提问于 2009-02-11 13:24:30
回答 1查看 2.5K关注 0票数 3

所以情况是这样的:

我有一个屏幕大小的CALayer,我将contents属性设置为2MbJPEG,大小约为3500 x 2000像素,分辨率为240ppi。

我希望在使用CALayer时会有一些开销,但我的示例应用程序(它只执行上面的操作)显示了大约33MbRSIZE、22MRPVT和30MbRSHRD的使用。我注意到,当以64位运行应用程序时,这些数字比作为32位进程运行时要好得多。

我在这个示例所来自的真实应用程序中做了我能想到的所有事情,包括重新采样我的CGImageRefs,使其仅为层的大小,但这对我来说似乎是无关紧要的-它不应该更简单吗?

有没有人发现了减少内存、CALayers和CGImageRefs使用量的好方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-02-11 18:06:39

首先,在普通CALayer中使用这种大小的图像会遇到问题,因为您可能会达到2048x2048的纹理大小限制(取决于您的显卡)。像这样的应用程序就是CATiledLayer的设计目标。Bill Dudney在他的blog (一个大型的PDF)和the code that accompanies his book上都有一些代码示例。

考虑到它将作为未压缩的位图存储在CGImage中,所以这么大的图像会占用如此多的内存对我来说并不奇怪。除了将图像缩放到所需的分辨率,并使用CATiledLayer对其进行平铺之外,我想不了太多。在将CGImageRef分配给CAlayer的内容之后,是否要释放它?在这一点上,您将不需要坚持下去。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/536735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档