【发布时间】:2018-12-03 16:22:23
【问题描述】:
我正在使用 sprite kit 开发一款游戏,并为不同的场景提供各种视图控制器。比如故事模式、多人游戏等等……
我注意到一个问题,每次我打开一个带有 SpriteKit 场景的视图控制器时,我的应用程序的内存使用量都会增加。当视图被关闭时,内存没有分配回来?
我需要在代码中做些什么来返回 ViewController 或 SpriteKit 场景在加载时使用的内存吗?
编辑:根据要求,这是 VC 加载 SpriteKit 场景时的一些代码以及用于关闭 VC 的代码:
override func viewDidLoad() {
super.viewDidLoad()
if let view = self.view as! SKView? {
if let scene = SKScene(fileNamed: "GameScene.sks") {
scene.scaleMode = .aspectFill
view.presentScene(scene)
(scene as! GameScene).parentVC = self
}
}
}
对于视图关闭,我首先在 UIApplication.shared.keyWindow 上显示一个加载屏幕,然后关闭:
dismiss(animated: true) {
LoadingScreen?.removeFromSuperview()
}
加载屏幕类在 AppDelegate 中处理。
【问题讨论】:
-
这将有助于查看一些代码,这将让人们看到哪里可能存在错误或优化机会
-
这就是我有很多代码的东西。特别是整个游戏,因此我想我会先问这个问题,然后我可以根据人们想要看到的内容分享特定部分的特定代码。坦率地说,我不知道哪个部分有贡献,所以希望有人能指出我需要查看的内容。
-
你说它发生在你加载一个视图控制器时。因此,显示该代码,以及解除它的代码。甚至可能提供一张关于您的视图控制器如何链接在一起的高级结构的图片
-
好的,谢谢,我已经添加了该代码。我不确定什么是高级结构,你的意思是像一个像树一样显示它们的连接的图像吗?
标签: swift sprite-kit