使用replaceScene时如何释放内存

时间:2012-02-08 09:12:19

标签: ios memory-leaks cocos2d-iphone

首先。谢谢你的帮助,抱歉我的英语很差......

我使用cocos2d来开发2D游戏。

在游戏中,我使用4个场景(主要,等级,设置,游戏)

在Appdelegate中,我使用下面的代码制作mainscene。

[[CCDirector sharedDirector] runWithScene: [MainMenuLayer scene]];

我使用“replaceScene”来改变代码如下的场景。 (在MainmenyLayer)

[[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:1.0 scene:[TutorialLayer scene]]];

(在TutorialLayer中)

[[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:1.0 scene:[GameLayer scene]]];

看起来效果很好。

但是当我测试内存泄漏时。我发现场景变化之间存在泄漏。

我想每次改变场景。创建了一个新的场景对象,但没有发布。

我检查了dealloc功能,它正在工作。像贝娄 -

-(void) dealloc {
    [self release]
    [super dealloc];
}

但是当我运行泄漏配置文件时,每当我在场景之间切换时,我都会看到内存不断堆叠。

我如何像这种情况一样管理内存释放?

再一次,感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您不必在dealloc方法中使用[self release]释放CCLayer,cocos2d会为您处理。 事实上,所有Cocos2D节点都是自动释放对象,并由cocos2d自动释放。 只有你自己使用alloc,retain或new分配任何东西,你必须释放它。