Ios removeAllChildren与为self.children中的所有节点发出“removeFromParent”相比?

Ios removeAllChildren与为self.children中的所有节点发出“removeFromParent”相比?,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,我正在学习SpriteKit教程,对于SKSpriteNode的子类,它们有以下代码: for child in children { child.removeFromParent() } 为什么使用此选项而不是: removeAllChildren ??对我来说,远离所有的孩子是显而易见的选择。我知道一个是要求家长把所有的孩子都带走,另一个是要求所有的孩子把自己从他们的父母身边带走,我想知道我是否遗漏了一个微妙之处 有关更多信息,请参阅Ray Wenderlich教程“CatNap

我正在学习SpriteKit教程,对于SKSpriteNode的子类,它们有以下代码:

for child in children {
    child.removeFromParent()
}
为什么使用此选项而不是:

removeAllChildren
??对我来说,远离所有的孩子是显而易见的选择。我知道一个是要求家长把所有的孩子都带走,另一个是要求所有的孩子把自己从他们的父母身边带走,我想知道我是否遗漏了一个微妙之处

有关更多信息,请参阅Ray Wenderlich教程“CatNap”,该教程是付费系列教程的一部分。代码位于SKSpriteNode子类中的函数中,用于通过移除所有子节点眼睛、尾巴等并用新节点替换它们来更改节点的外观。以下是函数:

func wakeUp() {
    for child in children {
      child.removeFromParent()
    }
    texture = nil
    color = SKColor.clearColor()

    let catAwake = SKSpriteNode(fileNamed: "CatWakeUp")!.childNodeWithName("cat_awake")!

    catAwake.moveToParent(self)
    catAwake.position = CGPoint(x: -30, y: 100)
}
我确实想知道在编写教程时removeAllChildren是否不可用,但removeAllChildren是在iOS7中随SpriteKit引入的,所以看起来不是这样。

我已将child.removeFromParent循环替换为一个removeAllChildren,但行为没有明显变化。我怀疑教程的作者只是不知道这个函数是可用的


如果将SKNode子类化并重写removeFromParent,则可能会引入一些removeAllChildren不会执行的自定义行为。

没有原因,作者可能只是不知道或忘记了removeAllChildren。这在编程中经常发生,这就是为什么我们有代码审查。