私の質問はiOS Application Crash while UIImage loading (virtual memory not cleaning up) と非常によく似ています。私はオブジェクトの配列を持っていて、各オブジェクトは変数の1つとしてピクチャを持っています。上記の記事の答えは、オブジェクトが配列から削除された後もオブジェクトが残っているようです。しかし、私は彼がこの問題を解決するために何をしたのかを正確に把握していないようです。私はSwiftを使用しており、Objective-Cでの経験はありません。メモリの問題のためにUIImageを読み込んだときにiOSアプリがクラッシュする
誰かが彼の問題を解決するために行ったことを教えてください。答えの彼のサンプルコードは私には意味がありません。
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")
と、これらのオブジェクトが配置されている配列:オブジェクトの初期化が少し次のようになります
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);
}
}
:ここ
は、画像プロパティが含まれて私のクラスであり、次のように表示されます。
public var newestCards = [DayWatcher, NightWatcher, DustWailer, QuartermasterGauj]
私は宣言の前に "weak"を追加し、すべての "!"を追加するだけで、オブジェクト自体を弱い参照に変換できます。 「?」 Xcodeで追加する必要がありましたが、これで画像がコレクションビューに表示されなくなりました。 また、私はそうのようなクラス宣言自体に「弱い」追加してみました:
weak var image : UIImage!
しかし、これは単に表示されない画像が生じました。 ご協力いただきありがとうございます。
大文字で 'var ArgeonHighmayne'を宣言するのはなぜですか?それはクラスかvarか? – mat
@matクラスのインスタンスです。 –
"ArgeonHighmayne"という名前のファイルがありますか? UIImage(名前: "ArgeonHighmayne")! –