【发布时间】:2013-10-15 14:10:27
【问题描述】:
我正在为新的 iOS 7 和 Sprite Kit 构建一个 iOS 游戏,使用发射器节点和物理来增强游戏性。在开发应用程序时,我遇到了一个严重的问题:您创建了场景、节点、效果,但是当您完成并需要返回主屏幕时,您如何释放这些资源分配的所有内存?
理想情况下,ARC 应该释放所有内容,并且应用程序应该恢复到创建场景之前的内存消耗水平,但事实并非如此。
我添加了以下代码,作为视图的 dealloc 方法,它绘制场景并负责在关闭(移除)时移除所有内容:
- (void) dealloc
{
if (scene != nil)
{
[scene setPaused:YES];
[scene removeAllActions];
[scene removeAllChildren];
scene = nil;
[((SKView *)sceneView) presentScene:nil];
sceneView = nil;
}
}
- sceneView是一个UIView,是场景的容器
- scene 是 SKScene 类的扩展,创建所有 SKSpriteNode 对象
我非常感谢您在这件事上的任何帮助。
【问题讨论】:
-
同样的问题,即使我调用了dismissViewControllerAnimated,我的场景仍然在运行,你解决了吗?
-
是的,我做到了,我无法从场景或 Sprite Kit 中对此做任何事情,我只需要从父视图中完全删除场景和包含它的视图,切断它与系统其他部分的所有联系,以便同时释放内存。
标签: ios memory-management physics game-physics sprite-kit