2015-02-10 50 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文件夾和重建後,沒有錯誤運行。

相關問題