Swift 计算机属性的使用
以前 之后Swift 计算机属性的使用,swift,properties,Swift,Properties,以前 之后 class DrawingView: UIView { var arcCenter = CGPoint(x: frame.midX, y: frame.midY) // error } 我知道为什么会发生这种错误,但我不明白为什么第二个代码不会出错。第一种形式是而不是计算属性 class DrawingView: UIView { var arcCenter: CGPoint { return CGPoint(x: frame.midX, y:
class DrawingView: UIView {
var arcCenter = CGPoint(x: frame.midX, y: frame.midY) // error
}
我知道为什么会发生这种错误,但我不明白为什么第二个代码不会出错。第一种形式是而不是计算属性
class DrawingView: UIView {
var arcCenter: CGPoint {
return CGPoint(x: frame.midX, y: frame.midY)
}
}
它是一个带有默认值的存储的属性
它使用self
,这会导致错误,因为在将要分配默认值的时刻,不保证实例化实例
计算属性(仅在调用时计算)的替代方法是延迟实例化属性
class DrawingView: UIView {
var arcCenter: CGPoint {
return CGPoint(x: frame.midX, y: frame.midY)
}
}
与存储的属性不同,第一次访问该属性时会指定默认值。无需使用闭包<代码>中心:CGPoint=CGPoint(x:self.frame.midX,y:self.frame.midY)