2015-02-10 48 views
1

我刚刚更新到Xcode 6.3测试版。它支持Swift 1.2,所以它使我的项目出现很多错误。尽管我已经使用了“Convert To Swift 1.2”功能,但它无法清除所有错误。如这个错误:Xcode 6.3&Swift错误:由隐式初始化程序'init()'在这里定义的Objective-C方法'init'

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的方法; 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 
    } 
} 

但什么是“Objective-C的方法 'init' 的隐式定义初始化'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 
    } 
} 
+0

我删除了我的答案。我希望别人能帮助你。 – fred02138 2015-02-11 15:52:52

+0

与Objective-C中的子类不同,Swift子类默认不会继承它们的父类初始化程序。所以'init()'是Objc中'SKSpriteNode'的指定初始值设定项,但不是Swift中的。我认为这个问题打破了Objc和Swift之间的桥梁。 – YangXiaoyu 2015-02-11 16:09:47

回答

0

这是解决在Xcode 6.3测试版2,清洗build文件夹和重建后,没有错误运行。

相关问题