Xcode 7.3.1 Swift"初始化程序不会覆盖其超类的指定初始化程序"错误

时间:2016-07-17 18:13:02

标签: swift xcode sprite-kit

import Foundation
import SpriteKit

class HGHero: SKSpriteNode {

var body: SKSpriteNode!
var arm: SKSpriteNode!
var leftFoot: SKSpriteNode!
var rightFoot: SKSpriteNode!

错误来自:

override init () {

我不确定发生了什么。我试图覆盖SKSpriteNode的默认初始化。

super.init(texture: nil, color: UIColor.blackColor(), size:    
CGSizeMake(32,44))
}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

}

1 个答案:

答案 0 :(得分:1)

您只需要删除override关键字。

class HGHero: SKSpriteNode {

    var body: SKSpriteNode!
    var arm: SKSpriteNode!
    var leftFoot: SKSpriteNode!
    var rightFoot: SKSpriteNode!

    init() {
        super.init(texture: nil, color: UIColor.blackColor(), size:
            CGSizeMake(32,44))
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }   
}
  

Infact初始值设定项不是继承的(就像使用方法或属性一样)。所以你不要覆盖它们。

只是一个注释

这些隐含的未包装选项

var body: SKSpriteNode!
var arm: SKSpriteNode!
var leftFoot: SKSpriteNode!
var rightFoot: SKSpriteNode!

非常危险。