在 objective c 中计算 属性

computed property in objective c

我正在尝试通过复制 this 教程在 objective-C 中制作一个纺车。但我不知道如何在 objective c 中转换 swift 的计算 属性。我如何在 objective-c 中声明半径变量,如下面的代码,我可以在计算变量中调用 invalidateLayout 方法?

var radius: CGFloat = 500 {
  didSet {
    invalidateLayout()
  }
}

严格来说你的例子不是计算出来的属性

无论如何 Objective-C 等价于

@property (assign, nonatomic) CGFloat radius;

有时通过实例变量设置初始值以获得在初始化时不调用 invalidateLayout 方法的行为。

_radius = 500.0;

并实施 setter

- (void)setRadius:(CGFloat)radius
{
  if (_radius != radius) {
    _radius = radius;
    [self invalidateLayout];
  }
}

如果您需要始终调用 invalidateLayout,即使值未更改,请删除 if 检查。