Xcode 6.3&;快速错误:Objective-C方法';初始';由隐式初始值设定项定义';init()';在这里
我刚刚更新到Xcode 6.3测试版。它支持Swift 1.2,因此它使我的项目出现许多错误。虽然我使用了“转换为Swift 1.2”功能,但它不能清除所有错误。例如这个错误:Xcode 6.3&;快速错误:Objective-C方法';初始';由隐式初始值设定项定义';init()';在这里,xcode,swift,Xcode,Swift,我刚刚更新到Xcode 6.3测试版。它支持Swift 1.2,因此它使我的项目出现许多错误。虽然我使用了“转换为Swift 1.2”功能,但它不能清除所有错误。例如这个错误: import SpriteKit class Score: Shape { convenience init() { self.init(name:"Score",imageName:"score") self.physicsBody!.categoryBitMask = scor
import SpriteKit
class Score: Shape {
convenience init() {
self.init(name:"Score",imageName:"score")
self.physicsBody!.categoryBitMask = scoreCategory
light.lightColor = SKColor.greenColor()
light.categoryBitMask = scoreLightCategory
}
}
Xcode显示第3行有错误:初始值设定项'init()'覆盖超类'SKSpriteNode'中的Objective-C方法'init';此处由隐式初始值设定项“init()”定义的Objective-C方法“init”
但如果我添加如下参数:
import SpriteKit
class Score: Shape {
convenience init(args:Bool) {
self.init(name:"Score",imageName:"score")
self.physicsBody!.categoryBitMask = scoreCategory
light.lightColor = SKColor.greenColor()
light.categoryBitMask = scoreLightCategory
}
}
但隐式初始值设定项“init()”定义的“Objective-C方法“init”是什么意思?我怎样才能优雅地解决这个问题
注:Shape
类继承自SKSpriteNode
类:
class Shape: SKSpriteNode {
required init(coder: NSCoder) {
fatalError("NSCoding not supported")
}
init(name:String,imageName:String){
super.init(texture: SKTexture(imageNamed: imageName),color:SKColor.clearColor(), size: CGSizeMake(radius*2, radius*2))
self.name = name
}
}
这在Xcode 6.3 beta 2中得到了解决。清理生成文件夹并重新生成后,它将正常运行 我已经删除了我的答案。我希望其他人能帮助您。与Objective-C中的子类不同,Swift子类默认情况下不会继承它们的超类初始值设定项。因此,在Objc中,
init()
是SKSpriteNode
的指定初始值设定项,但在Swift中不是。我认为这个问题打破了Objc和Swift之间的桥梁。