所以我今天更新到Xcode 6 beta 5,并注意到我几乎所有Apple类的子类都收到了错误.
错误说明:
类'x'不实现其超类的必需成员
这是我选择的一个例子,因为这个类目前非常轻量级,因此很容易发布.
class InfoBar: SKSpriteNode { //Error message here
let team: Team
let healthBar: SKSpriteNode
init(team: Team, size: CGSize) {
self.team = team
if self.team == Team.TeamGood {
healthBar = SKSpriteNode(color: UIColor.greenColor(), size:size)
}
else {
healthBar = SKSpriteNode(color: UIColor.redColor(), size:size)
}
super.init(texture:nil, color: UIColor.darkGrayColor(), size: size)
self.addChild(healthBar)
}
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,为什么我收到此错误,我该如何解决?我没有实施什么?我正在打电话给指定的初始化程序.
由于Swift支持方法和初始化程序重载,因此您可以将多个init并排放在一起,并使用您认为方便的方法:
class Person {
var name:String
init(name: String) {
self.name = name
}
init() {
self.name = "John"
}
}
Run Code Online (Sandbox Code Playgroud)
那么convenience关键字为什么会存在呢?是什么让以下更好?
class Person {
var name:String
init(name: String) {
self.name = name
}
convenience init() {
self.init(name: "John")
}
}
Run Code Online (Sandbox Code Playgroud)