在 Swift 2.1 中,在使用class方法之前,我需要initialize每个属性。但是如果我想拥有一个属性的子类,我将有一个无限循环。这可能吗?
class Myclass {
let mySubClass:SubClass
init() {
mySubClass = SubClass()
print("Init my class")
}
}
class SubClass:Myclass {
override init() {
print("Init subclass")
}
}
let myClass = Myclass()
答案 0 :(得分:3)
您可以使用惰性存储属性。
在第一次使用子类的实例时,子类的实例不会被初始化。
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
答案 1 :(得分:1)
我认为你最好明确表达关系。类似的东西:
class Myclass {
var mySubClass:SubClass?
init() {
print("Init my class")
}
}
class SubClass:Myclass {
override init() {
print("Init subclass")
}
}
var myClass = Myclass()
let mySub = SubClass()
myClass.mySubClass = mySub