我通过斯坦福大学课程学习Swift语言。 在第五讲中,有一个演示画一个笑脸。
有一个faceCenter声明,代码如下所示。
var faceCenter: CGPoint {
return convertPoint(center, fromView: superview)
}
但我的问题是为什么我可以像下面这样简单地使用?
var faceCenter: CGPoint = convertPoint(center, fromView: superview)
当我这样做时,系统会给出这个错误,"额外的参数"来自View"在电话"。
有谁能告诉我这个问题?
答案 0 :(得分:1)
它不起作用,因为#middle-panel
尚未初始化。必须在self
可用之前分配每个值。
它实际上试图使用自己三次:
self
不幸的是,编译器对此错误并没有多大帮助。
您始终可以将其设为可选项或为其指定默认值。然后在init方法中给它正确的值。
可以在访问var faceCenter: CGPoint = self.convertPoint(self.center, fromView: self.superview)
的同时创建stored property
,而无需在init方法中指定值。这涉及self
中的方法。声明为faceCenterBeta
时,在第一次读取时为其赋值,而不是在初始化对象时为其赋值。它还使用lazy
代替closure
来获取值。
getter