在子类实例化中使用超类的便利初始化器

时间:2014-08-20 03:08:15

标签: ios swift ios8

这发生在XCode6-Beta5的操场上

我正在尝试在子类SKSpriteNode中向Sprite添加一些功能,但我仍然想在SKSpriteNode中使用便捷初始值设定项。但是,我收到以下错误:

"Cannot convert the expression's type 'Sprite' to type 'Sprite'"

来自此代码:

import Cocoa
import SpriteKit

class Sprite : SKSpriteNode {
    // The following code makes this not compile
    // required init(coder aDecoder: NSCoder!) {
    //     super.init(coder: aDecoder)
    // }
}

var sprite = Sprite(imageNamed: "Rayman1.png") // Error occurs on this line

有问题的便利初始化程序声明如下:

convenience init(imageNamed name: String!)

我做错了什么?

2 个答案:

答案 0 :(得分:0)

编程指南中指定的

初始化程序链接规则,内容如下:

  

指定的初始值设定项必须从它们的直接超类中调用指定的初始化程序。

如果你在子类实例化中调用超类的方便初始化,则不允许这样做。

希望这会有所帮助.. :)

答案 1 :(得分:0)

我不得不摆脱init(coder aDecoder: NSCoder!)方法,并修复了一切。我不明白为什么。