我正在创建一个按钮点击生成扑克牌的游戏。我正在使用此代码执行此操作:
var imageView = UIImageView(frame: CGRectMake(CGFloat(pos), 178, 117, 172));
var image = UIImage(named: "\(deck[Int(card)])_of_\(suits[Int(arc4random_uniform(4))])")
imageView.image = image
self.view.addSubview(imageView)
但我有另一个重置游戏的按钮。我希望只能删除以编程方式添加的卡片。任何有关这方面的帮助将不胜感激。
答案 0 :(得分:8)
您可以在某些媒体资源中跟踪imageView
,当您想删除它时,您只需:
imageView.removeFromSuperview() // this removes it from your view hierarchy
imageView = nil; // if your reference to it was a strong reference, make sure to `nil` that strong reference
顺便说一句,正如您所知,UIImage(named:...)
会将图像缓存在内存中。如果你想要,那很好,但如果没有,你可能想要UIImage(contentsOfFile:...)
使用该资源的完全限定路径。如果您使用UIImage(named:...)
,即使删除了UIImageView
,图像也会保留在内存中。正如文档所说:
如果您的图像文件只显示一次,并希望确保它不会添加到系统的缓存中,则应使用
imageWithContentsOfFile:
创建图像。这会将您的一次性图像保留在系统图像缓存之外,从而可能会改善应用程序的内存使用特性。