Swift-类方法中的self.init()无法创建正确的类型

时间:2018-09-30 15:51:59

标签: swift initialization

我有一个类层次结构,其中ClassB继承自ClassA

静态变量solitaireClassA上定义

static var solitaire: ClassA!

类函数createdSolitaire()ClassA上定义

class func createSolitaire() {

  solitaire = self.init()
}

当我呼叫ClassB.createSolitaire()时,变量solitaire设置为ClassA而不是ClassB的实例。

我在这里做错了什么?谢谢。

代码:

class ClassA {

static var shared: ClassA!

class func createSolitaire() {
    shared = self.init()
} 
}

class ClassB : ClassA {
}

要重现该问题,请从任何地方调用ClassB.createSolitaire(),例如,在ViewController中使用PlayGround或viewLoaded方法。

1 个答案:

答案 0 :(得分:0)

由于Martin R的评论,我找到了解决方法:

我只是将空的init()方法添加到ClassA并添加了“ required”,现在self.init()返回了正确的对象(在我的示例中,是ClassB的实例,而不是ClassA)。修复它有些令人不安,但无论如何。

必需的init(){ }