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