【问题标题】:Subclassing SCNScene in Swift - override init在 Swift 中子类化 SCNScene - 覆盖 init
【发布时间】:2014-12-04 21:30:59
【问题描述】:

我在使用 Swift 的 Xcode 6 中遇到了一些编译器错误,我很难理解这些错误。我正在尝试通过子类化 SCNScene 创建一个场景,但在初始化程序上不断出现错误。我的代码的基本结构是:

class SpaceScene: SCNScene {
    override init(named: String) {
        super.init(named: named)
    }
}

这会导致第 2 行出现错误消息“Initializer does not override a specified initializer from its superclass”,尽管 SCNScene 显然有这样的初始化程序。我想我缺少一些基本的东西 - 任何见解?

【问题讨论】:

  • 可能你忘了覆盖其他指定的初始化器(比如initWithCoder:,因为它符合NSSecureCoding
  • init(named:String) 是一种方便的方法,不能用这种方式覆盖

标签: swift overriding scenekit


【解决方案1】:

XCode 6.1 上,应该执行以下操作:

class SpaceScene : SCNScene {

override init() {
    super.init()
}

required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
}
}

【讨论】:

  • 对于像我这样仍在寻找一种方法来为子类提供带有命名参数的 init 的人来说,应用此解决方案后就不需要了。一旦所有指定的构造函数都可用link,角色2,便利构造函数就会自动可用。
猜你喜欢
  • 2014-08-22
  • 2020-01-09
  • 1970-01-01
  • 2016-04-07
  • 1970-01-01
  • 2021-06-30
  • 2016-05-31
  • 1970-01-01
  • 2016-04-04
相关资源
最近更新 更多