【问题标题】:Xcode 7.3.1 Swift "initializer does not override a designated initializer from its superclass" errorXcode 7.3.1 Swift“初始化程序不会覆盖其超类中的指定初始化程序”错误
【发布时间】:2016-07-17 18:13:01
【问题描述】:
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")
}

}

【问题讨论】:

标签: swift xcode sprite-kit


【解决方案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!

非常危险。

【讨论】:

  • 感谢您的帮助,appzYourLife!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-15
  • 2015-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多