Reputation: 423
Swift (from the book 《iOS Animations by Tutorials:Chapter 12》 released by http://www.raywenderlich.com/):
let photoLayer = CALayer()
@IBInspectable
var image: UIImage! {
didSet {
photoLayer.contents = image.CGImage
}
}
How can I implement the above syntax in objective-c? I know only to set the property of photoLayer and image like below:
@property (strong, nonatomic) CALayer *photoLayer;
@property (strong, nonatomic) IBInspectable UIImage *image;
But i do not know how to implement didset{...}
parts using objective-c syntax, please help!
Upvotes: 25
Views: 15725
Reputation: 50089
override the setter and implement the setter yourself.
- (void)setImage:(UIImage *)image {
if (_image != image) {
_image = image;
photoLayer.contents = image.CGImage;
}
}
Upvotes: 45
Reputation: 16650
Swift needs special language features for this, because of its static nature, one cannot subclass at runtime.
In Objective-C this is not necessary, so you have no language feature for this. You can use key-value observation.
But if the observing instance is the instance whose property changed, you can do it with subclassing as mentioned by @Daij-Djan. (Basically this is what you do in Swift.) Additionally in Objective-C you have the ability to observe the properties of a different instance of a different class.
Upvotes: 3