iOS/Swift/Spritekit 在我在该 View Controller 中呈现新场景后,场景是否会删除数据?

标签 ios iphone swift uiviewcontroller sprite-kit

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

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

最佳答案

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

判断场景是否从内存中删除的一种简单方法是在场景中放置一个 deinit 方法,并在其中打印一些内容。如果调用 deinit,则您的场景已被删除。

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

下找到它

关于iOS/Swift/Spritekit 在我在该 View Controller 中呈现新场景后,场景是否会删除数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30113695/

相关文章:

ios - 无法将数据保存到 MVC (Swift)

ios - 将数据从 iOS 推送到 Google Cloud BigQuery

iphone - 在编辑模式下防止 UITableView 默认行为

ios - Swift - 位置提示不会很快发生

objective-c - 在 Swift 类中使用类型为 "Selector"的函数参数将使该函数对 Objective-C 不可用

iOS CGAffineTransform 与 mask

iphone - 我可以将 2 个 nib 文件连接到同一个 .h 和 .m 吗?

iphone - 如何在应用程序中引用每个 UILabel

ios - UIView 未从 super View 中删除

ios - 如何在框架中的 Objective-C 文件中使用 Swift 类?