SKNode有一个removeChild未记录的方法,当通过removeFromParent方法删除其子对象时,该方法在父对象上调用。覆盖removeChild是否安全?
答案 0 :(得分:3)
可能是的,但没有。
问题是你不知道是否会在所有情况下调用此方法。例如,我注意到一些SK * Node类将一些消息直接路由到底层C ++对象,而不是将消息传递给SKNode中的超级实现。
此外,我打赌,重写私有方法会构成私人API使用的情况,可能会阻止您的应用在App Store上发布。
从技术上讲,只是尝试一下,看它是否有效。它可能会。但由于所有其他原因,你当然不应该这样做。
而是覆盖removeFromParent
并在您的覆盖中访问self.parent
,以防您需要对父级执行某些操作。请注意,您必须在每个SK * Node子类中执行此操作。这是因为您无法覆盖类别中的方法,并且您不能对SKNode进行子类化并期望从其他SKNode直接子类(如SKSpriteNode)调用子类方法(因为它们与您的子类并行,不是SKNode子类的子类。)