【发布时间】:2014-04-05 09:36:06
【问题描述】:
我的代码中有一个案例,如果我重新定义它所指向的内容,我似乎必须重新添加一个子节点,但我不太明白为什么。
例如:
_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 调用),我的游戏似乎只是空白。
你知道我是否遗漏了什么吗?
【问题讨论】:
标签: ios iphone objective-c sprite-kit sknode