iOS/Swift/Spritekit 在 viewcontroller 中呈现新场景后,场景会删除数据吗?

iOS/Swift/Spritekit Do scenes delete data after I present a new scene within that viewcontroller?

所以 Obj 的这个问题有部分答案。 C. 我只是在 Swift 中询问相同想法的机制。此外,我想比较和对比切换 ViewController 和切换场景作为在游戏和它的 MainMenu 之间切换的一种方式。 Presenting a scene in SpriteKit without discarding the previous?

作者在上一节中说我在那个ViewController中呈现一个新场景时场景被完全丢弃,在spritekit/swift中是这样吗?我正在做的是我有几个场景(GameScene、MainMenuScene、OptionsScene 等),我不断地在它们之间切换,作为完全切换视图的一种方式。这会删除与该 GameScene 实例关联的所有数据吗?我不希望这些数据的任何残余随着时间的推移减慢我的游戏速度。此外,有些人建议切换 ViewControllers 而不是场景,以实现 MainMenu 等的想法。每种方法的优点和缺点是什么?

是的,当你呈现一个新场景时,它会删除与场景相关的数据,除非你有某种强大的引用循环。如果你有一个强引用循环,你的场景和关联的对象会留在内存中,你无法访问它们。不好。

判断场景是否从内存中删除的一种简单方法是在场景中放置一个 deinit 方法,然后在其中打印一些内容。如果调用了 deinit,那么你的场景就被删除了。

如果您想准确查看游戏中不同点存在的对象,可以使用分配工具。 您可以在 XCode > 打开开发者工具 > Instruments

下找到它