在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/

10-10 16:14