在尝试从SkPhysicsBody继承时,我发现了一些很奇怪的东西: 便利的初始化都不是继承的!
这是您可以在操场上测试的代码:
import PlaygroundSupport
import SpriteKit
import GameplayKit
public class SKPhysicsBodySubClass:SKPhysicsBody
{
}
let pb = SKPhysicsBody(circleOfRadius: 10)
let pbsc = SKPhysicsBodySubClass(circleOfRadius: 10)
最后一条指令产生一条错误,提示父init不存在:“调用中的参数标签不正确(具有'circleOfRadius:',预期为'coder:')”
我也知道继承规则:
规则1: 如果您的子类没有定义任何指定的初始值设定项,它将自动继承其所有超类指定的初始值设定项。
规则2: 如果您的子类提供了其所有超类指定初始化器的实现(通过按照规则1继承它们,或通过提供自定义实现作为其定义的一部分),那么它将自动继承所有超类便利性初始化器。
知道这里发生了什么吗?我想念什么?