我正在尝试通过复制本教程在 Objective-C 中制作一个旋转轮。但我不知道如何在目标 c 中转换 swift 的计算属性。如何在objective-c中声明半径变量,如下面的代码,我可以在计算变量中调用invalidateLayout方法?
var radius: CGFloat = 500 {
didSet {
invalidateLayout()
}
}
我正在尝试通过复制本教程在 Objective-C 中制作一个旋转轮。但我不知道如何在目标 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
检查。