3

SKNode has a removeChild undocumented method which is called on parent object when deleting its child by removeFromParent method. Is it safe to override removeChild?

4

1 回答 1

3

可能是的,但不是。

问题是您不知道是否在所有情况下都会调用此方法。例如,我注意到一些 SK*Node 类将一些消息直接路由到底层 C++ 对象,而不是将消息传递给 SKNode 中的超级实现。

此外,我敢打赌,覆盖私有方法会构成使用私有 API 的情况,这可能会导致您的应用程序被禁止在 App Store 上发布。

从技术上讲,尽管尝试一下,看看它是否有效。它可能会。但是出于所有其他原因,您当然不应该这样做。

而是在您的覆盖中覆盖removeFromParent和访问self.parent,以防您需要对父母做某事。请注意,您必须在每个 SK*Node 子类中执行此操作。这是因为您不能覆盖类别中的方法,并且您不能将 SKNode 子类化并期望从其他 SKNode 直接子类(例如 SKSpriteNode)调用子类方法(因为它们与您的子类平行,而不是你的 SKNode 子类)。

于 2014-03-23T19:00:41.557 回答