由于内存问题,iOS应用程序在加载UIImage时崩溃

我的问题是非常相似的iOS应用程序崩溃,而UIImage加载(虚拟内存不清理) ,我有一个对象数组,每个对象有一个图片作为它的variables之一。 在上面的post中的答案似乎是,即使从数组中删除对象仍然存在。 但是,我似乎无法弄清楚他是如何解决这个问题的。 我正在使用Swift,在Objective-C中没有任何经验。

有人可以告诉我他怎么解决他的问题? 他在答案中的示例代码对我来说毫无意义。

这是我的课,其中包括图像属性:

open class Cards { var name = "" var image : UIImage! var manaCost = 0 var rarity = "" var whichClass = "" var cardText = "" var tribe = "" var cardType = "" //Minion or Spell var set = "" init(name : String, image : UIImage!, manaCost : Int, rarity : String, whichClass : String, cardType : String, tribe : String, cardText : String, set : String) { self.name = name self.image = image self.manaCost = manaCost self.rarity = rarity self.whichClass = whichClass self.cardType = cardType self.tribe = tribe self.cardText = cardText self.set = set } deinit { print("deinit " + name); } } 

对象的初始化看起来像这样:

 var ArgeonHighmayne = Cards(name: "Argeon Highmayne", image : UIImage( named : "ArgeonHighmayne")!, manaCost : 0, rarity : "Basic", whichClass : "Lyonar", cardType : "General", tribe : "None", cardText : "Bloodborn Spell: Give a minion nearby your general +2 Attack.", set : "Core") 

而这些对象所在的数组看起来像这样:

 public var newestCards = [DayWatcher, NightWatcher, DustWailer, QuartermasterGauj] 

我试图通过在声明前简单添加“弱”来将对象本身变成弱引用,并添加所有的“!” 和“?” Xcode需要我添加,但这只是导致图像不出现在我的collections视图。 我也尝试在类声明中join“weak”,如下所示:

 weak var image : UIImage! 

但是这也导致图像根本不显示。 在此先感谢您的帮助。

原来是因为图像是数组的一部分而崩溃了。 而不是在类中放置一个UIImage,最好把图像的名字放在那里,然后在collectionView方法中调用UIImage。