其实是在代码之前进行了解释:
除了存储的简单属性外,属性还可以具有getter和setter。
class EquilateralTriangle: NamedShape {
...
当其他某个类想要获取该周边变量时,他们会这样做:
let someVar = myTriangle.perimeter
...这称为:
get{
return 3.0 * self.sideLength
}
因此,本质上就像调用控制器执行此操作一样:
let someVar = 3.0 * myTriangle.sideLength
当您从另一个对象设置变量时,它看起来像这样:
myTriangle.perimeter = 100
哪个调用set{}
块中的代码:
set {
sideLength = newValue / 3.0
}
因此,就像设置变量的类是否做到了这一点:
myTriangle.sideLength = 100/3.0
实际上,这只是为了方便起见 -您可以从其他代码中调用此代码,而不必一直被3除或乘,因为这是在设置变量之前以及在获取变量之前完成的。
在Swift中,我们可以拥有在获取时可以计算的属性,并且在设置时可以执行某些操作。我们也可以在Objective-C中执行此操作:
// .h
@property (nonatomic) double perimeter;
//.m
- (double)perimeter
{
return self.sideLength * 3.0;
}
- (void)setPerimeter:(double)perimeter
{
self.perimeter = perimeter; // In Swift, this is done automatically.
self.sideLength = perimeter / 3.0;
}