Как освободить память при использовании replaceScene - PullRequest
0 голосов
/ 08 февраля 2012

Во-первых.Спасибо за вашу помощь и извините за мой плохой английский ...

Я использую cocos2d для разработки 2d игры.

В игре я использую 4 сцены (основной, ранг, сеттинг, игра)

В Appdelegate я делаю главную сцену с кодом ниже.

[[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 голосов
/ 08 февраля 2012

Вам не нужно освобождать CCLayer с помощью [self release] в методе dealloc, cocos2d позаботится об этом за вас. Фактически все узлы Cocos2D являются объектами автоматического выпуска и высвобождаются cocos2d автоматически. Только если вы что-то выделяете сами, используя alloc, retain или new, вы должны освободить это.

...