Я сделал быстрый проект, чтобы понять, как SpriteKit освобождает атласы из памяти.При каждом нажатии на экран создается атлас и загружается в память.Единственная ссылка на атлас - это то, что вы видите в приведенном ниже коде, и я подумал, что, поскольку var находится внутри неэкранирующей функции, он не содержит строгой ссылки.Моя цель состояла в том, чтобы предыдущие атласы, загруженные в память, были в конечном итоге освобождены, однако память накапливается и в конечном итоге дает сбой.
Я понимаю, что атласы должны загружаться только один раз, и три замечания, которые Apple делает здесь ( Работа со спрайтами ) о том, почему текстуры не будут освобождены
Можеткто-нибудь, помогите мне понять, почему это так?
class GameScene: SKScene {
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
var atlas:SKTextureAtlas? = SKTextureAtlas(named: "Title")
atlas?.preload {
atlas = nil
print("Loaded")
}
}
}
Новая ступенька памяти создается каждый раз при обнаружении касания