我以下列方式创建粒子效果:
CCParticleSun* p = [[CCParticleSun alloc]initWithTotalParticles:5000];
p.autoRemoveOnFinish = YES;
//more parameters
p.duration = 1;
并将其添加到我的场景中:
[self addChild:p z:self.zOrder+1];
每次创建此粒子效果时,都会分配3MB内存,但从未发布。 我究竟做错了什么?我是否必须手动释放粒子系统?
NSZombies被禁用,因此不会意外地保存在内存中。
答案 0 :(得分:2)
您分配(或保留)的所有内容也必须释放。对于Cocos2D,最简单的方法是将它变成这样的自动释放对象:
CCParticleSun* p = [[CCParticleSun alloc]initWithTotalParticles:5000];
[p autorelease];
p.autoRemoveOnFinish = YES;
p.duration = 1;
然后它将在Cocos2D清理你的场景后发布。
PS: 5000颗粒是GIGANTIC数量的颗粒!难怪你会看到几兆字节的分配。最多尝试500, 如果您使用大约32x32像素或更大像素的粒子纹理,则为100或更少。