iphone – 当我在Swift中销毁我的对象时,它不会释放我的RAM内存

iphone – 当我在Swift中销毁我的对象时,它不会释放我的RAM内存,第1张

概述这是一个测试,一个创建动作和一个破坏对象的动作,但是当我摧毁它时,我的RAM仍然使用相同数量的内存(大约30mb). var missileImage: UIImageView!weak var img: UIImage!@IBAction func createImg(sender: AnyObject) { missileImage = UIImageView(frame: CG 这是一个测试,一个创建动作和一个破坏对象的动作,但是当我摧毁它时,我的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}
解决方法 UIImage(命名:)缓存图像.在收到内存警告之前,这些内容不会被释放.也就是说,即使你的应用程序处于后台,它们也会在那时自动释放(如果你在后台发出警告,通常你没有机会减少内存).缓存使用NSPurgableData,这就是为什么它可以做到这一点.缓存清除非常聪明.它将删除数据,但保留文件信息,因此下次访问图像时,它将自动重新加载,您将永远不会注意到图像已从内存中清除(除了小的加载延迟) . iOS也可以在没有显示的情况下随时卸载缓存的图像,但我不知道任何文档可以准确地解释何时会发生.

如果您甚至有可能再次需要此图像,则应将其保留在缓存中.从磁盘读取是非常昂贵的,Apple会为您提供缓存以帮助您避免这种成本.但是,如果您不太可能再次显示此图像,则可以使用UIImage(contentsOffile :)来避免缓存.这不会缓存图像.尽管Apple会为您清除缓存,但如果不必要,可以避免创建内存警告.

总结

以上是内存溢出为你收集整理的iphone – 当我在Swift中销毁我的对象时,它不会释放我的RAM内存全部内容,希望文章能够帮你解决iphone – 当我在Swift中销毁我的对象时,它不会释放我的RAM内存所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1036481.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存