如何在UIImageView.animationImages之后清除内存?

我创建了一个新的Xcode项目,它只有以下内容:

  • 从png拖入到项目中创建UIImages数组的代码(我在将数据附加到数组时尝试了UIImage(命名:)和UIImage(contentsOfFile 🙂
  • 一个UIImageView
  • 一个设置imageView.animationImages = arrayOfImages并调用imageView.startAnimating()的按钮

按下按钮并播放动画时,内存使用量会增加150-200MB,具体取决于图像arrays中的图像数量。 然后内存使用量保持在该水平。

设置imageView.animationImages = nil不会清除内存。 我怎么能去清理那个记忆?

任何的意见都将会有帮助。 谢谢!

1.不要隐含地缓存图像

我猜你正在使用UIImage(名为:)?

此方法缓存图像,请参阅: https : //developer.apple.com/documentation/uikit/uiimage/1624146-init

Apple建议:

如果您的图像文件只显示一次并希望确保它不会添加到系统的缓存中,则应使用imageWithContentsOfFile创建图像: 这会将您的一次性图像保留在系统图像缓存之外,从而可能会改善应用程序的内存使用特性。

所以使用’UIImage(contentsOfFile:String)’可以解决你的问题。 由于您需要提供图像路径的文档,因此图像名称不足,请参见此处:

https://developer.apple.com/documentation/uikit/uiimage/1624123-imagewithcontentsoffile

在那里还提到:

此方法不缓存图像对象。

2.不要保留对图像的引用

将图像加载到本地arrays时,请确保将其清空。

self.imageArray = [] 

3.将imageView.animationImages设置为空数组

 self.imageArray = [] self.imageView.animationImages = self.imageArray 

快速validation仪器中的分配:

仪器中的分配

正如您所看到的,内存已被回收。 都好。