如何在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中,你可以观察不同类的不同实例的属性。