我有一个类层次结构,其中 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 方法。
最佳答案
感谢 Martin R 的评论,我找到了修复方法:
我只是用“required”向 ClassA 添加了一个空的 init() 方法,现在 self.init() 返回正确的对象(在我的示例中是 ClassB 的实例,而不是 ClassA)。修复它有点令人不安,但无论如何。
即
需要初始化() { }
关于Swift - 类方法中的 self.init() 未创建正确的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52579532/