我发现我的游戏中的一个SKNode会在其中一个孩子调用removeFromParent时删除多余的孩子。为了验证这一点,我重写了removeFromParent并添加了以下断言,该断言验证只删除了一个子节点。断言失败:
- (void) removeFromParent {
SKNode *parent = self.parent;
NSUInteger startingCount = [self.parent.children count];
[super removeFromParent];
if (parent) {
NSAssert([[parent children] count] == startingCount - 1, @"Wrong number of children after removing one child!");
}
}
我已经为此提交了一份错误报告,但我现在坚持认为,因为我没有解决方法。我想知道是否有其他人遇到过此问题并可能有解决方法。
答案 0 :(得分:0)
好的,我在预感后找到了解决方法。
我的子节点为isEqual:返回YES,即使它们是不同的对象,我没有覆盖isEqual:在我的SKSpriteNode子类中。似乎removeFromParent的实现使用了isEqual:,当非等节点返回YES时,它删除了多个。
我的解决方法是覆盖isEqual:使用以下内容:
- (BOOL) isEqual:(id)object {
return self == object;
}