我创建了一个只有以下内容的新Xcode项目:
按下按钮并播放动画时,内存使用量会增加150-200MB,具体取决于图像阵列中的图像数量。然后内存使用量保持在该水平。
设置imageView.animationImages = nil不清除内存。我该如何清理那段记忆呢?
任何建议都会有所帮助。谢谢!
答案 0 :(得分:3)
我猜你正在使用UIImage(名为:)?
此方法缓存图像,请参阅: https://developer.apple.com/documentation/uikit/uiimage/1624146-init
Apple建议:
如果您的图像文件只显示一次并希望确保它不会添加到系统的缓存中,则应使用imageWithContentsOfFile创建图像:这会将您的一次性图像保留在系统图像缓存之外,从而可能会改善应用程序的内存使用特性。
因此使用'UIImage(contentsOfFile:String)'可以解决您的问题。由于您需要提供图像路径的文档,因此图像名称不足,请参见此处:
https://developer.apple.com/documentation/uikit/uiimage/1624123-imagewithcontentsoffile
还有人提到:
此方法不会缓存图像对象。
当您将图像加载到本地阵列时,请确保将其清空。
self.imageArray = []
self.imageArray = []
self.imageView.animationImages = self.imageArray
快速验证仪器中的分配:
正如您所看到的,内存已被回收。一切都好。