Ios Super.init不是';在从初始值设定项错误返回之前,t在所有路径上调用
我正在开发一款使用操纵杆的SpriteKit游戏。我已经创建了一个节点类 该类的代码:Ios Super.init不是';在从初始值设定项错误返回之前,t在所有路径上调用,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,我正在开发一款使用操纵杆的SpriteKit游戏。我已经创建了一个节点类 该类的代码: import Foundation import SpriteKit class Joystick: SKNode { var joystickPad: SKShapeNode! var joystickStick: SKShapeNode! var colour: UIColor! init(colour: UIColor) { //constructo
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
- 斯皮特基特
- 代码9.2
- 运行最新公开发行iOS的iPhone 6s
- 这是因为您的类继承自
SKNode
如果子类声明了新的指定初始值设定项,则应该调用超类init。您可以找到有关初始化的更多信息
您只需在init
中添加super.init()
调用即可修复错误
init(colour: UIColor) {
//constructor method
self.colour = colour;
super.init()
}
因为我认为我的类只是一个类而不是一个超类
您的类是一个子类。因此,必须在初始值设定项中调用超类的指定初始值设定项:
init(colour: UIColor) {
self.colour = colour
super.init()
}
以下是我对规则的总结:可能重复的