swift文档里说在完成所在类和所有父类的属性初始化后,才能使用self,也就是初始化器调用super.init
后才能使用self
。
class Movie: Media {
var myString: String
init(frame: CGFloat) {
self.myString = "11"
print(self.myString)
print(self)
super.init()
print(self)
print("2")
}
}
比如这段代码,print(self)
会报错说要在super.init()
后才能调用,但是print(self.myString)
却能正常使用。这是为什么?
print(self)会报错的原因是编译器检测到并提示错误
'self' used before super.init call
。print(self.myString)没有报错的原因是,编译器没有处理这种特殊情况。