【发布时间】:2017-03-13 06:57:24
【问题描述】:
我的问题与iOS Application Crash while UIImage loading (virtual memory not cleaning up) 非常相似 因为我有一个对象数组,每个对象都有一张图片作为它的变量之一。上述帖子中的答案似乎是即使从数组中删除对象后它们仍然存在。但是,我似乎无法弄清楚他究竟做了什么来解决这个问题。我正在使用 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]
我试图将对象本身变成弱引用,只需在声明前添加“weak”并添加所有“!”和 ”?” Xcode 需要我添加,但这只是导致图像没有出现在我的收藏视图中。 我还尝试在类声明本身中添加“弱”,如下所示:
weak var image : UIImage!
但这也导致图像根本不显示。 提前感谢您的帮助。
【问题讨论】:
-
为什么
var ArgeonHighmayne用大写字母声明?它是一个类还是一个变量? -
@mat 是类的一个实例。
-
你确定你有一个名为“ArgeonHighmayne”的文件吗? UIImage(命名为:“ArgeonHighmayne”)!
-
@Prabhu.Somasundaram 是的,除了由于内存填满而崩溃之外,一切正常。仅当我将其更改为弱时,它才不显示图像。我提供的链接将提供很多关于其他人如何解决问题的信息。我只需要有人帮助我了解他们的解决方案
标签: ios iphone swift memory-leaks uiimage