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

标签 swift initialization

我有一个类层次结构,其中 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/

相关文章:

c++ - 如何最好地处理 C++ 对象初始化 : empty constructors or pointers?

vb.net - 是否可以使用字符串键/值对初始化New System.Collections.Generic.Dictionary?

arrays - 如何初始化像 std::array 这样的类

java - 我应该保持 Java 中的实例变量始终初始化吗?

ios - 如何在 Swift 中将 TextField 添加到 UIAlertController

ios - 获取当前位置邮政编码 ios swift

ios - tableView 没有出现在 ViewController 中(swift)

jquery 全日历 : is init done?

swift - 避免 switch 支持没有类的多态性

swift - 在 WebView 中从 JavaScript 调用 native Swift 函数