我已经创建了一个新的Xcode项目,它只包含以下内容:
当按下按钮并播放动画时,内存使用量将增加150-200MB,具体取决于图像阵列中的图像数量。则内存使用率将保持在该级别。
设置imageView.animationImages = nil不会清除内存。我该如何着手清除这些内存呢?
任何建议都会很有帮助。谢谢!
发布于 2018-06-04 02:05:45
1.不要隐式缓存图片
我猜您使用的是UIImage(名为:)?
此方法缓存图像,请参阅: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
快速验证Instruments中的分配:
如你所见,内存被回收了。一切都很好。
https://stackoverflow.com/questions/50668841
复制相似问题