在从初始化程序错误返回之前,不会在所有路径上调用Super.init

时间:2018-05-26 15:51:39

标签: ios swift sprite-kit

我正在开发一款使用操纵杆的SpriteKit游戏。我创建了一个操纵杆SKNode Class。

班级代码:

import Foundation
import SpriteKit

class Joystick: SKNode {
    var joystickPad: SKShapeNode!
    var joystickStick: SKShapeNode!

    var colour: UIColor!

    init(colour: UIColor) {
        //constructor method
        self.colour = colour;
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    // lots of other code unrelated to the error
}

运行代码时出现以下错误:

  

在从初始化程序

返回之前,不会在所有路径上调用Super.init

任何人都可以解释错误并告诉我任何解决方案,我不知道为什么我会收到这个错误,因为我认为我的班级只是一个班级而不是超类。

非常感谢任何帮助。

其他信息:

我正在使用:

  • Swift 4
  • Spritekit
  • Xcode 9.2
  • iPhone 6s运行最新的公开发布iOS

2 个答案:

答案 0 :(得分:3)

这是因为您的班级继承自SKNode

如果子类声明了新的指定初始化程序,则应该调用超类init。您可以找到有关初始化here的更多信息。

您只需在super.init()中添加init来解决错误。

init(colour: UIColor) {
    //constructor method
    self.colour = colour;
    super.init()
}

答案 1 :(得分:0)

  

因为我认为我的班级只是一个班级而不是超类

您的类是子类。因此,您必须在初始化程序中调用超类的指定初始值设定项:

init(colour: UIColor) {
    self.colour = colour
    super.init()
}