我正在使用Xcode编写一个游戏,并使用雪碧包在iOS模拟器上测试它。
我使用的SKEmitterNode似乎导致了内存泄漏;当游戏运行时,每次将SKEmitterNode放到屏幕上(当绘制“爆炸”时),在左侧的“显示调试导航器”下,内存会无限制地增加。
有谁有解决这个问题的办法吗?
下面的代码都是用MYScene.m编写的。
我的SKEmitterNode叫做_EmitterShatterApart,它是一个叫做"ShatterApart.sks“的爆炸。_PositionObject是一个正在爆炸的对象的SKSpriteNode。_bgLayer是背景层。
@implementation MyScene
{
SKEmitterNode *_EmitterShatterApart;
...
}
-(void)MatchIncorrect
{
...
_EmitterShatterApart = [NSKeyedUnarchiver unarchiveObjectWithFile: [[NSBundle mainBundle] pathForResource:@"ShatterApart" ofType:@"sks"]];
_EmitterShatterApart.position = _PositionsObject.position;
if (!_EmitterShatterApart.parent) {
//[self.particleLayerNode addChild:_EmitterShatterApart];
[_bgLayer addChild:_EmitterShatterApart];
_EmitterShatterApart.userInteractionEnabled=FALSE;
[_EmitterShatterApart resetSimulation];
}
}发布于 2014-07-02 23:48:43
在添加新发射器之前,应从场景中移除旧发射器。尝试使用:
-(void)MatchIncorrect
{
...
[_EmitterShatterApart removeFromParent];
_EmitterShatterApart = [NSKeyedUnarchiver unarchiveObjectWithFile: [[NSBundle mainBundle] pathForResource:@"ShatterApart" ofType:@"sks"]];
...如果不执行此操作,则会继续将发射器添加到场景中,从而占用内存而不释放它。
https://stackoverflow.com/questions/24535118
复制相似问题