我的代码中有一个案例,如果我重新定义它指向的内容,我似乎必须重新添加一个子节点,但我不太明白为什么。
例如:
_worldNode = [SKNode node];
_childNode = [SKNode node]; //set childNode to point to a node here.
_childChildNode = [SKSpriteNode spriteNodeWithImageNamed:@"test"];
[self addChild:_worldNode];
[_worldNode addChild:_childNode]; //add childNode to the worldNode
[_childNode addChild:_childChildNode];
//Later on...
[_childNode removeAllChildren]; //1. do I need to do this to clean up _childChildNode first?
_childNode = [SKNode node]; //set childNode to another node.
_anotherChildChildNode = [SKSpriteNode spriteNodeWithImageNamed:@"test"];
[_childNode addChild:_anotherChildChildNode];
//2. do I need to re-add _childNode to _worldNode now?
做 1 似乎释放了我游戏中的很多节点,但我认为这没有必要,因为我将 _childNode 指向正下方的另一个节点,所以我认为我最初指向的节点(和 _childChildNode)会引用计数为 0 并且会被释放?
我也不认为我需要做 2,因为我之前已经将 _childNode 添加到 _worldNode 但是如果我不添加此行(可能来自 removeAllChildren 调用),我的游戏似乎只是空白。
你知道我是否在这里遗漏了什么吗?