簡體   English   中英

在從初始化程序錯誤返回之前,不會在所有路徑上調用Super.init

[英]Super.init isn't called on all paths before returning from initializer Error

我正在開發一個使用操縱桿的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

任何人都可以解釋錯誤並告訴我任何解決方案,我不明白為什么我得到那個錯誤,因為我認為我的班級只是一個類而不是超類。

任何幫助將非常感激。

附加信息:

我正在使用:

  • 斯威夫特4
  • Spritekit
  • Xcode 9.2
  • iPhone 6s運行最新的公開發布iOS

這是因為你的類繼承自SKNode

如果子類聲明了新的指定初始化程序,則應該調用超類init。 您可以在此處找到有關初始化的更多信息

您可以在init添加super.init()調用來修復錯誤。

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

因為我認為我的班級只是一個班級而不是超級班級

你的類是一個子類 因此,您必須在初始化程序中調用超類的指定初始值設定項:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM