根据文档禁止self
来电之前访问super.init()
。为什么使用self.properties
是正确的。
var myString: String
init(frame: CGFloat) {
//error:'self' userd before super.init call
print(self)
self.myString = "11"
print(self.myString)
super.init()
}
为什么会出现错误调用print(self)
,调用print(self.myString)
是否正常?
答案 0 :(得分:1)
推理是逻辑上下文,让我们来看看。
在行self.myString = "11"
中,您声明myString是什么,== "11"
。
现在,你可以print(self.myString)
。
但是!你不能打印自己,因为SELF从未被初始化/声明!您必须调用某种初始值设定项,即父初始值设定项(super.init)
,然后声明/实例化某种类型的对象。
所以你可能不一定知道SELF是什么,但你绝对可以确定self.myString
是什么!