Xcode 6.3&Swift 错误:Objective-C 方法'init'由隐式初始值设定项定义 'init()' 这里



我刚刚更新到Xcode 6.3测试版。它支持Swift 1.2,因此它使我的项目出现了许多错误。虽然我使用了"Convert To Swift 1.2"功能,但它无法清除所有错误。比如这个错误:

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显示第三行有一个错误:Initializer"init()"重写了超类"SKSpriteNode"中的Objective-C方法"init";Objective-C方法"init"由此处的隐式初始值设定项"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"是什么意思?我该如何优雅地解决这个问题?

PS: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中得到了解决。在清理生成文件夹并重新生成后,它运行时没有出现任何错误。

相关内容

最新更新