22

Swift ( http://www.raywenderlich.com/からリリースされた本「iOS Animations by Tutorials:Chapter 12」より):

let photoLayer = CALayer()

@IBInspectable
  var image: UIImage! {
    didSet {
      photoLayer.contents = image.CGImage
    }
}

上記の構文をobjective-cに実装するにはどうすればよいですか? 私は以下のように photoLayer と image のプロパティを設定することだけを知っています:

@property (strong, nonatomic) CALayer *photoLayer;
@property (strong, nonatomic) IBInspectable UIImage *image;

didset{...}しかし、objective-c 構文を使用してパーツを実装する方法がわかりません。助けてください!

4

2 に答える 2

41

セッターをオーバーライドし、セッターを自分で実装します。

- (void)setImage:(UIImage *)image {
    if (_image != image) {
        _image = image;
        photoLayer.contents = image.CGImage;
    }
}
于 2015-09-24T08:13:50.273 に答える
2

Swift はそのために特別な言語機能を必要とします。静的な性質のため、実行時にサブクラス化することはできません。

Objective-C ではこれは必要ないため、このための言語機能はありません。キー値監視を使用できます。

ただし、監視インスタンスがプロパティが変更されたインスタンスである場合は、@ Daij-Djan で言及されているように、サブクラス化を使用してそれを行うことができます。(基本的に、これは Swift で行うことです。)さらに、Objective-C では、別のクラスの別のインスタンスのプロパティを観察することができます。

于 2015-09-24T08:20:19.677 に答える