目标:
这是我的代码:
mainImageView.image = UIImage(named:"FirstImage.png") // load first image, no issues
然后,如果您以编程方式将第二个图像加载到同一个UIImage中,它会导致设备抛出一个低内存警告,并且iOS会崩溃该应用程序:
mainImageView.image = UIImage(named:"SecondImage.png") // load second image
答案 0 :(得分:0)
在阅读了SO和其他文章(见下文)的大量答案后,在将多个图像加载到动画数组中时管理内存的最佳方法是使用contentsOfFile: imageName
而不是{{1 }}
请参阅此处的文章:
http://www.alexcurylo.com/2009/01/13/imagenamed-is-evil/
其次,Apple声明如下:
如果匹配的图像对象不是 已经在缓存中,此方法定位并加载图像数据 从磁盘或可用的资产目录,然后返回 结果对象。系统可以随时清除缓存的图像数据 释放记忆。清除只发生在图像中 缓存但目前尚未使用。在iOS 9及更高版本中,这个 方法是线程安全的。特别注意事项如果您有图像 只显示一次并希望确保它的文件 如果没有添加到系统的缓存中,您应该创建自己的缓存 图像使用 imageWithContentsOfFile:。这将保持您的一次性使用 图像超出系统图像缓存,可能会改善内存 使用你的应用程序的特征。
https://developer.apple.com/documentation/uikit/uiimage/1624146-init
最后,收到内存警告后,您还可以创建以下功能:
UIImage(named:"FirstImage.png")
希望这有助于其他人:)