Ios 如何修复SKEmitterNode的内存泄漏?
我是一个初学者,使用Xcode的精灵工具包为iPhone编写游戏。我对SKEmitterNode有意见。特别是,每次添加以下SKEmitterNode时,即使使用removeFromParent SKAction,看起来都会出现无限内存泄漏。有人能解决这个问题吗?谢谢Ios 如何修复SKEmitterNode的内存泄漏?,ios,objective-c,memory-leaks,sprite-kit,skemitternode,Ios,Objective C,Memory Leaks,Sprite Kit,Skemitternode,我是一个初学者,使用Xcode的精灵工具包为iPhone编写游戏。我对SKEmitterNode有意见。特别是,每次添加以下SKEmitterNode时,即使使用removeFromParent SKAction,看起来都会出现无限内存泄漏。有人能解决这个问题吗?谢谢 SKEmitterNode *_EmitterShatterApart; ... -(void)ShatterApart { SKAction *fadeaway = [SKAction fadeOutWithD
SKEmitterNode *_EmitterShatterApart;
...
-(void)ShatterApart
{
SKAction *fadeaway = [SKAction fadeOutWithDuration:0.5];
SKAction *removeFromParent = [SKAction removeFromParent];
_EmitterShatterApart = [NSKeyedUnarchiver unarchiveObjectWithFile: [[NSBundle mainBundle] pathForResource:@"ShatterApart" ofType:@"sks"]];
_EmitterShatterApart.position = _NodePlayer.position;
if (!_EmitterShatterApart.parent) {
[_bgLayer addChild:_EmitterShatterApart];
_EmitterShatterApart.userInteractionEnabled=FALSE;
[_EmitterShatterApart runAction: [SKAction sequence:@[fadeaway,removeFromParent]]];
}
}
调用
removeFromParent
操作后,\u emitterShatterPart
将不会解除分配,因为您在此处定义的静态变量中保留了对它的强引用:
SKEmitterNode *_EmitterShatterApart;
谢谢reecon,你能告诉我如何解决这个问题吗?我是否应该以不同的方式定义_EmitterShatterApart?最好花一些时间来了解强引用是什么,并对ARC(自动引用计数)的工作原理有一个基本的了解。这会为你节省时间和头痛,当然你应该这样做。这些问题有时很难发现,并可能导致随机低内存崩溃。它不会花很多时间去学习,而且非常简单。