0

创建以下列方式粒子效果:的Cocos2D:particle.autoRemoveOnFinish不释放内存

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

,并把它添加到我的场景:

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

每次我创建这个粒子效果,分配了3MB的内存,但从未释放。 我在做什么错?我必须手动释放粒子系统吗?

NSZombies被禁用,所以它不会被意外保存在内存中。

回答

2

您分配(或保留)的所有内容都必须发布。对于cocos2d的最简单的方法把它变成像这样的自动释放对象:

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

然后cocos2d的清理你的场景后,将被释放。

PS: 5000颗粒是GIGANTIC颗粒量!难怪你会看到几兆字节的大小。如果您使用的是大约32x32像素或更大的粒子纹理,请尝试最多500个, 100或更少。

+0

该死的,我吮吸内存管理:(谢谢你的伟大答案 - 再次! – dschihejns