如何使用数百个UIImage实例加载数组而不会由于内存激增而使应用程序崩溃?

时间:2018-10-20 15:50:24

标签: ios uiimage avfoundation cakeyframeanimation

我有一个包含250帧的动画。每帧的分辨率均为1080x1920,格式为PNG。我需要拍摄所有这些帧,并用CAKeyframeAnimation进行动画处理,然后使用AVFoundation工具在视频上进行渲染。

当我尝试为values创建CAKeyframeAnimation数组时出现问题。初始化250张FullHD图像会导致很大的内存高峰,系统会检测到并决定终止该应用程序。 我尝试过使用autoreleasepool玩游戏,但似乎一点都没有帮助(难怪,因为CAKeyframeAnimation需要保留这些图像)。

问题甚至更进一步:我实际上有10个这样的动画!而且我需要在它们之间快速切换,因为该应用程序允许在导出视频文件中的所有内容之前动态预览这些动画(通过AVSynchronizedLayer完成)。

所以我的问题是:如何在不因内存激增而导致系统终止应用程序的情况下加载一大堆UIImage实例?是否有异步的方式加载它们?

1 个答案:

答案 0 :(得分:2)

  

如何在不因内存激增而导致系统终止应用程序的情况下加载大量UIImage实例?

不能。您尝试做的事情从一开始就是错误的。

  • 如果目标是通过使用关键帧动画来定期更改图层内容来制作“ sprite动画”,则该动画应由数量为 small small 组成。 em>图片。

  • 如果目标是根据一系列图像制作视频,那么关键帧动画并不是首先要做的。