swift - 我可以将我的类的子类作为 Swift 中的属性吗?

标签 swift

Swift 2.1 我需要 initialize使用类方法之前的每个属性。但是如果我想要一个属性是它的子类,我将有一个无限循环。这可能吗?

class Myclass {
    let mySubClass:SubClass
    init() {
        mySubClass = SubClass()
        print("Init my class")
    }
}

class SubClass:Myclass {
    override init() {
        print("Init subclass")
    }
}

let myClass = Myclass()

最佳答案

您可以使用惰性存储属性。

子类的实例只有在第一次使用时才会被初始化。

class Myclass {
  lazy var mySubClass : SubClass = {
    return SubClass()
  }()

  init() {
    print("Init my class")
  }
}

class SubClass:Myclass {
  override init() {
    print("Init subclass")
  }
}

let myClass = Myclass()
myClass.mySubClass

关于swift - 我可以将我的类的子类作为 Swift 中的属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34955812/

相关文章:

swift - 如何使用 SceneKit 涡流场创建 Tornado 效果

ios - 如何使输入的文字成为一行文字?

swift 3 错误 : Type 'Any' has no subscript members

arrays - 从 Core Data 创建一个 CLLocation 坐标数组

ios - 核心数据迁移: Could not cast value of type 'NSManagedObject_MyType' to 'MyModule.MyType'

ios - MKMapView 错误和 SFViewController 错误

ios - 检查是否通过文本字段和日期选择器选择了日期

swift watch 套件 : startUpdatingLocation() is unavailable

ios - Firebase 身份验证 (Swift 3) 的多个错误

ios - 我可以在 Realm.IO 中使用 child 的主键作为 parent 的主键吗?