Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift SKNode子类生成错误:无法调用类型“的初始值设定项”;X";毫无争议_Swift_Sprite Kit - Fatal编程技术网

Swift SKNode子类生成错误:无法调用类型“的初始值设定项”;X";毫无争议

Swift SKNode子类生成错误:无法调用类型“的初始值设定项”;X";毫无争议,swift,sprite-kit,Swift,Sprite Kit,SKNodes可以使用空初始值设定项进行初始化,例如,let node=SKNode()。但是,子类化SKNode会破坏此功能。子类化SKNode后,Xcode在尝试对子类使用空初始值设定项时会生成此错误: Cannot invoke initializer for type "X" with no arguments 假设SKNodeSubclass是SKNode的子类,则行let node=SKNodeSubclass()生成此错误 是否可以从SKNode生成子类并使用空 初始化器与SKN

SKNodes可以使用空初始值设定项进行初始化,例如,
let node=SKNode()
。但是,子类化SKNode会破坏此功能。子类化
SKNode
后,Xcode在尝试对子类使用空初始值设定项时会生成此错误:

Cannot invoke initializer for type "X" with no arguments
假设
SKNodeSubclass
SKNode
的子类,则行
let node=SKNodeSubclass()
生成此错误

是否可以从SKNode生成子类并使用空 初始化器与SKNode类似吗

如果查看自动初始值设定项继承下,自动继承超类指定初始值设定项的规则之一是:

如果您的子类没有定义任何指定的初始值设定项,那么 自动继承其所有超类指定的初始化器

这假定您为引入的任何新特性提供默认值

由于您正在定义指定的初始化器
init(gridWidth:CGFloat,deviceHeight:CGFloat)
您的子类不会从
SKNode
继承
init()
。因此,为了能够使用
StatusScreen()
您需要在
StatusScreen
类中重写
init()

class StatusScreen: SKNode {
    // ...

    override init() {
        super.init()

        // Do other stuff...
    }
}
现在您可以使用:

let node1 = StatusScreen()
let node2 = StatusScreen(gridWidth: 100, deviceHeight: 100)
希望有帮助

let node1 = StatusScreen()
let node2 = StatusScreen(gridWidth: 100, deviceHeight: 100)