如何在Objective-C中实现“迅捷”

Swift(来自http://www.raywenderlich.com/发布的书“iOS教程animation:第12章”):

let photoLayer = CALayer() @IBInspectable var image: UIImage! { didSet { photoLayer.contents = image.CGImage } } 

我如何在objective-c中实现上面的语法? 我只知道设置photoLayer的属性和图像如下:

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

但是我不知道如何使用objective-c语法实现didset{...}部分,请帮忙!

重写setter并自己实现setter。

 - (void)setImage:(UIImage*)image { _image = image; photoLayer.contents = image.CGImage } 

Swift需要特殊的语言function,因为它的静态特性,不能在运行时进行子类化。

在Objective-C中,这是没有必要的,所以你没有语言function。 您可以使用键值观察 。

但是,如果观察实例是属性更改的实例,则可以使用@ Daij-Djan提到的子类化来实现。 (基本上这是你在Swift中做的。)另外在Objective-C中,你可以观察不同类的不同实例的属性。