2

このチュートリアルを複製して、objective-C で糸車を作ろうとしています。しかし、目的のcでswiftの計算されたプロパティを変換する方法がわかりません。以下のコードのように、計算された変数でinvalidateLayoutメソッドを呼び出すことができるように、objective-cでradius変数を宣言するにはどうすればよいですか?

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

1 に答える 1

9

厳密に言えば、あなたの例は計算されたプロパティではありません

とにかくObjective-Cの同等物は

@property (assign, nonatomic) CGFloat radius;

ある時点でインスタンス変数を介して初期値を設定し、初期化時にinvalidateLayoutメソッドを呼び出さない動作を取得します。

_radius = 500.0;

そして、セッターを実装します

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

invalidateLayout値が変わらなくても常に呼び出す必要がある場合は、ifチェックを外します。

于 2016-02-23T07:59:44.943 に答える