swift在super.init之前调用self

时间:2016-06-27 03:24:59

标签: swift initialization

根据文档禁止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)是否正常?

1 个答案:

答案 0 :(得分:1)

推理是逻辑上下文,让我们来看看。

在行self.myString = "11"中,您声明myString是什么,== "11"

现在,你可以print(self.myString)

但是!你不能打印自己,因为SELF从未被初始化/声明!您必须调用某种初始值设定项,即父初始值设定项(super.init),然后声明/实例化某种类型的对象。

所以你可能不一定知道SELF是什么,但你绝对可以确定self.myString是什么!