Cocos2d :icle.autoRemoveOnFinish не освобождает память - PullRequest
0 голосов
/ 17 ноября 2011

Я создаю эффект частиц следующим образом:

CCParticleSun* p = [[CCParticleSun alloc]initWithTotalParticles:5000];
p.autoRemoveOnFinish = YES;
//more parameters
p.duration = 1;

и добавьте его в мою сцену:

[self addChild:p z:self.zOrder+1];

Каждый раз, когда я создаю этот эффект частицы, выделяется 3 МБ памяти, но никогда не освобождается. Что я делаю неправильно? Нужно ли вручную выпускать систему частиц?

NSZombies отключены, поэтому они не сохраняются в памяти случайно.

1 Ответ

2 голосов
/ 17 ноября 2011

Все, что вы выделяете (или оставляете), вы также должны освободить.Для Cocos2D проще всего превратить его в объект автоматического выпуска, например:

CCParticleSun* p = [[CCParticleSun alloc]initWithTotalParticles:5000];
[p autorelease];
p.autoRemoveOnFinish = YES;
p.duration = 1;

Затем он будет выпущен после того, как Cocos2D очистит вашу сцену.

PS: 5000частицы это гигантское количество частиц!Не удивительно, что вы видите выделение размером в несколько мегабайт.Попробуйте выбрать 500 максимум, 100 или меньше, если вы используете текстуры частиц размером около 32x32 пикселей или более.

...