我想將SKSpriteNode從一個SKNode移動到另一個SKNode。 removeFromParent方法實際上釋放了精靈。如何在SKNode之間移動SKSpriteNode
例如,在這個代碼MySprite的是SKSpriteNode的一個dealloc的定製方法的子類,輸出一個字符串,只是爲了讓我知道該對象被釋放:
SKNode *node1 = [SKNode node];
SKNode *node2 = [SKNode node];
//[self addChild:node1];
//[self addChild:node2];
MySprite *sprite = [MySprite spriteNodeWithColor:[SKColor blueColor] size:CGSizeMake(30, 30)];
[node1 addChild:sprite];
[sprite removeFromParent];
[node2 addChild:sprite];
在這種情況下,精靈被釋放。我認爲即使在調用removeFromParent之後,對sprite的強引用也應該保持活動狀態,但它不會。
但是,如果我取消註釋[self addChild:node2];精靈未被釋放。
我在這裏很困惑。如果removeFromParent釋放了該對象,那麼精靈應該是零,並且我應該向父節點添加一個無節點的錯誤。不是嗎?該文檔只是說,removeFromParent:「從其父母刪除接收節點。」但它並沒有說明如何在這裏管理內存。
感謝。正確的是由於範圍。我爲精靈創建了一個實例變量,並且未釋放它。 – zago