2014-07-02 203 views
0

我正在使用Xcode編程一款遊戲,並使用Sprite Kit在iOS模擬器上進行測試。SKEmitterNode導致內存泄漏

我使用的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]; 
     } 
} 

回答

1

在添加新的發射器之前,您應該從場景中刪除舊的發射器。嘗試與:

​​

如果你不這樣做,那麼你繼續添加發射器到你的場景,因此佔用內存,而不會釋放它。