SpriteKit - 您是否有必要执行内存管理? (不再需要在场景之后删除节点等)

时间:2017-06-28 05:29:32

标签: ios swift sprite-kit admob

我一直在通过SpriteKit创建游戏,并使用SKScene SKSpriteNodesSkNodes来执行此操作。当用户死亡时,我让SKScene的父视图控制器通过View Controller对游戏执行segue。我删除了游戏场景中SKSpriteNodes的一些SKNodes,但没有SKScene。当用户再次按下播放时,它会使用SKScene执行返回View Controller的操作,游戏将重新开始。我想知道是否有必要在用户死亡之后以及在segue之前通过View Controller从游戏中移除SKNodes及其节点。我创建的所有SKSpriteNodesconsole.log(new Date().toString().match(/([A-Z]+[\+-][0-9]+)/)[1]);是否仍然保存在内存中?我问这个问题是因为我注意到每次游戏/匹配后我的应用程序的内存都显示在Xcode中,而且应用程序的内存高于比赛/游戏之前的内存。

*如果与问题相关,我会通过View Controller在游戏中加载并显示给用户的Admob横幅和奖励视频广告。

1 个答案:

答案 0 :(得分:3)

只要有强烈的参考,它们就会被记忆。

如果没有代码,我们肯定不会知道,但是您可以检查的一种快速方法是将其添加到您的gamescene然后执行segues:

deinit {
  print("gamescene go byebye!")
}

无论如何,对于小型游戏来说,这不应该是一个问题。如果您的游戏中有很多SKScenes,那么您需要确保他们能够正常睡觉。

作为答案的补充,这里有一个关于Swift内存管理,发现内存泄漏,保留周期以及如何处理它们的快速教程:

https://www.raywenderlich.com/134411/arc-memory-management-swift