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