2

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

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

1 回答 1

9

严格来说,您的示例不是计算属性

无论如何,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检查。

于 2016-02-23T07:59:44.943 回答