Jos*_*dan 4 memory iphone xcode swift
这是一个测试,一个创建动作和一个破坏对象的动作,但是当我摧毁它时,我的RAM仍然使用相同数量的内存(大约30mb).
var missileImage: UIImageView!
weak var img: UIImage!
@IBAction func createImg(sender: AnyObject) {
missileImage = UIImageView(frame: CGRectMake(CGFloat(arc4random() % 100), 200, 50, 30))
img = UIImage(named: "house.jpg")
missileImage.image = img
missileImage.tag = 10001
self.view.addSubview(missileImage)
}
@IBAction func destroyImg(sender: AnyObject) {
self.view.viewWithTag(10001)?.removeFromSuperview()
img = nil
missileImage = nil
}
Run Code Online (Sandbox Code Playgroud)
Rob*_*ier 20
UIImage(named:)
缓存图像.在收到内存警告之前,这些内容不会被释放.也就是说,即使你的应用程序处于后台,它们也会在那时自动释放(如果你在后台发出警告,通常你没有机会减少内存).缓存使用NSPurgableData
,这就是为什么它可以做到这一点.缓存清除非常聪明.它将删除数据,但保留文件信息,因此下次访问图像时,它将自动重新加载,您将永远不会注意到图像已从内存中清除(除了小的加载延迟) .iOS也可以在没有显示的情况下随时卸载缓存的图像,但我不知道任何文档可以准确地解释何时会发生.
如果您甚至有可能再次需要此图像,则应将其保留在缓存中.从磁盘读取是非常昂贵的,Apple会为您提供缓存以帮助您避免这种成本.但是,如果您不太可能再次显示此图像,则可以通过使用UIImage(contentsOfFile:)
来避免缓存.这不会缓存图像.尽管Apple会为您清除缓存,但如果不必要,可以避免创建内存警告.
归档时间: |
|
查看次数: |
6752 次 |
最近记录: |