Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory SpriteKit内存问题_Memory_Uiviewcontroller_Sprite Kit_Skscene_Skview - Fatal编程技术网

Memory SpriteKit内存问题

Memory SpriteKit内存问题,memory,uiviewcontroller,sprite-kit,skscene,skview,Memory,Uiviewcontroller,Sprite Kit,Skscene,Skview,我对SpriteKit的游戏开发还不熟悉,到目前为止一切都还不错,但内存管理部分还不够 我创建了第一个UIViewController作为级别选择器,第二个UIViewController用于显示游戏场景。当我从SKScene返回到level选择器时,问题出现了,并且没有释放任何内存 在游戏场景中,当用户按下后退按钮转到关卡选择器时,我会发布一条通知,通知第二个UIViewController执行该步骤 //SKScene [self removeAllActions]; [self remov

我对SpriteKit的游戏开发还不熟悉,到目前为止一切都还不错,但内存管理部分还不够

我创建了第一个UIViewController作为级别选择器,第二个UIViewController用于显示游戏场景。当我从SKScene返回到level选择器时,问题出现了,并且没有释放任何内存

在游戏场景中,当用户按下后退按钮转到关卡选择器时,我会发布一条通知,通知第二个UIViewController执行该步骤

//SKScene
[self removeAllActions];
[self removeAllChildren];
[self removeFromParent];

[[NSNotificationCenter defaultCenter]postNotificationName:@"toLevelSelector" object:nil userInfo:nil];

//Second UIViewController
- (void)toLevel:(NSNotification *)notif
{
    [self performSegueWithIdentifier:@"toLevelSelector" sender:self];
}

您能帮助我更好地了解skview或skscene应该在何时何地从内存中释放吗?

我认为内存没有释放,因为您没有关闭保存SpriteKit的视图控制器。当我第一次尝试制作在UIViewController中有菜单的游戏,然后按钮启动SpriteKit游戏时,我体验到关闭游戏不会结束计时器、声音、音乐等。。。 假设您有一个名为MainMenuViewController的UIViewController,它有一个按钮,用于调用运行SpriteKit游戏的GameViewController。因此,为了完全关闭游戏,请尝试在退出游戏按钮中实现此方法

[(GameViewcontroller *)self.view.window.rootViewController dismissViewControllerAnimated:YES completion:nil];

你能解释一下你是如何确定那场戏没有被释放的吗?两个视图控制器是否创建不同的SKView实例(不推荐)?