SKNode removeFromParent有时会删除多余的孩子

时间:2014-08-04 21:31:14

标签: sprite-kit ios8 sknode

我发现我的游戏中的一个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!");
}

}

我已经为此提交了一份错误报告,但我现在坚持认为,因为我没有解决方法。我想知道是否有其他人遇到过此问题并可能有解决方法。

1 个答案:

答案 0 :(得分:0)

好的,我在预感后找到了解决方法。

我的子节点为isEqual:返回YES,即使它们是不同的对象,我没有覆盖isEqual:在我的SKSpriteNode子类中。似乎removeFromParent的实现使用了isEqual:,当非等节点返回YES时,它删除了多个。

我的解决方法是覆盖isEqual:使用以下内容:

- (BOOL) isEqual:(id)object {
    return self == object;
}