私は順番にオブジェクトにスプライトを関連付けました。私のObjectクラスの抜粋:変数の所有者を返す - スウィフト
import SpriteKit
class Block {
var sprite : ColourSprite
}
あなたが見ることができるように、それは実際にはSKSprite(ColourSpriteがSKSpriteNodeから継承私のカスタムクラスである)である変数を持っています。
ゲーム中のいくつかの時点で、これらのスプライトは削除されます(sprite.removeFromParent())が、オブジェクトは明らかにまだどこかにあります。
スプライトが消えたら、ガベージコレクションにオブジェクトを送信したいと思っています。私はsprite.getOwner()のようなことができると思っていますが、見つけられないようです。これは可能ですか?
私が考えることができる唯一のオプションは、すべてのオブジェクトを手動でチェックし、それぞれのスプライトをチェックすることですが、長くて無駄です。
"ブロック"オブジェクトには何らかの参照がありますか?何かそれを維持していますか?あなたはブロックや何かの配列を持っていますか? Blockクラス内にスプライドをラップする目的は何ですか? – Pochi
はい、私はGameScenceの例です:let block1 = Block()。私はそれの目的は、複数のブロックスプライトを作成するときだと思います。私は、物理的なものを設定するときにコードの行を繰り返したくないので、クラス内のすべての機能を保持しました。 –
「なぜオブジェクトは明らかにまだどこかにいる」と言うのはなぜですか?あなたがオブジェクトに参照されているすべてのものを解放していて、解放されていない(デストラクターが呼び出されていないなど)場合は、おそらく循環参照があります。 – Michael