我一直在通过SpriteKit
创建游戏,并使用SKScene
SKSpriteNodes
和SkNodes
来执行此操作。当用户死亡时,我让SKScene
的父视图控制器通过View Controller对游戏执行segue
。我删除了游戏场景中SKSpriteNodes
的一些SKNodes
,但没有SKScene
。当用户再次按下播放时,它会使用SKScene
执行返回View Controller的操作,游戏将重新开始。我想知道是否有必要在用户死亡之后以及在segue
之前通过View Controller从游戏中移除SKNodes
及其节点。我创建的所有SKSpriteNodes
和console.log(new Date().toString().match(/([A-Z]+[\+-][0-9]+)/)[1]);
是否仍然保存在内存中?我问这个问题是因为我注意到每次游戏/匹配后我的应用程序的内存都显示在Xcode中,而且应用程序的内存高于比赛/游戏之前的内存。
*如果与问题相关,我会通过View Controller在游戏中加载并显示给用户的Admob横幅和奖励视频广告。
答案 0 :(得分:3)
只要有强烈的参考,它们就会被记忆。
如果没有代码,我们肯定不会知道,但是您可以检查的一种快速方法是将其添加到您的gamescene然后执行segues:
deinit {
print("gamescene go byebye!")
}
无论如何,对于小型游戏来说,这不应该是一个问题。如果您的游戏中有很多SKScenes,那么您需要确保他们能够正常睡觉。
作为答案的补充,这里有一个关于Swift内存管理,发现内存泄漏,保留周期以及如何处理它们的快速教程:
https://www.raywenderlich.com/134411/arc-memory-management-swift