我有一个类层次结构,其中ClassB
继承自ClassA
静态变量solitaire
在ClassA
上定义
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方法。
答案 0 :(得分:0)
由于Martin R的评论,我找到了解决方法:
我只是将空的init()方法添加到ClassA并添加了“ required”,现在self.init()返回了正确的对象(在我的示例中,是ClassB的实例,而不是ClassA)。修复它有些令人不安,但无论如何。
即
必需的init(){ }