【问题标题】:iOS app crashing on loading UIImage due to memory issues由于内存问题,iOS 应用程序在加载 UIImage 时崩溃
【发布时间】: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


【解决方案1】:

原来它崩溃了,因为图像是数组的一部分。与其将 UIImage 放在类中,不如将图像的名称放在那里,然后在 collectionView 方法中对该名称调用 UIImage。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-24
    • 2020-03-17
    • 2017-01-27
    • 2012-06-19
    • 1970-01-01
    • 2012-07-24
    • 2016-08-07
    • 1970-01-01
    相关资源
    最近更新 更多