我用SpriteKit创建了一个简单的游戏,但每次运行游戏时,模拟器中的内存使用量增加约30mb,但游戏结束后永远不会减少.
当我运行游戏超过十次时,模拟器变得越来越慢并最终崩溃.
在这个简单的游戏中我有两个控制器和一个gamecene:
MainController通过触发按钮调用GameViewController
在GameViewController中,gamescene以这种方式初始化:
class GameViewController: UIViewController { var skView:SKView! var scene:GameScene! override func viewDidLoad() { super.viewDidLoad() scene = GameScene(size: view.bounds.size) skView = view as SKView skView.ignoresSiblingOrder = true scene.scaleMode = .ResizeFill scene.viewController = self skView.presentScene(scene) } //with a prepareForSegue deinitialises the scene and skview: override func prepareForSegue(segue: UIStoryboardSegue,sender: AnyObject?) { if segue.identifier == "GameFinished"{ scene.removeAllActions() scene.removeAllChildren() scene.removeFromParent() scene = nil skView.presentScene(nil) skView = nil let target = segue.destinationViewController as MainController } } }@H_301_10@在GameScene中,viewController是一个属性
var viewController:GameViewController? = GameViewController()@H_301_10@segue被触发:
self.viewController!.performSegueWithIdentifier("GameFinished",sender: nil)@H_301_10@我也试过在GameScene中将remove方法放入deinit:
deinit{ self.removeAllActions() self.removeAllChildren() }@H_301_10@仍然行不通