我做了一个快速项目来了解 SpriteKit 如何从内存中释放地图集。每次点击屏幕时,都会创建一个图集并将其加载到内存中。对图集的唯一引用是您在下面的代码中看到的内容,我认为由于 var 位于非转义函数内部,因此它不具有强引用。我的目标是最终释放加载到内存中的先前地图集,但是内存堆积并最终崩溃。
我知道地图集只应该加载一次,Apple 在这里提出的三点(使用 Sprites)关于为什么不释放纹理
有人可以帮我理解为什么会这样吗?
class GameScene: SKScene {
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
var atlas:SKTextureAtlas? = SKTextureAtlas(named: "Title")
atlas?.preload {
atlas = nil
print("Loaded")
}
}
}