Je passe d'une application d'Objective-C à Swift, dont j'ai quelques catégories avec des propriétés stockées, par exemple:
@interface UIView (MyCategory)
- (void)alignToView:(UIView *)view
alignment:(UIViewRelativeAlignment)alignment;
- (UIView *)clone;
@property (strong) PFObject *xo;
@property (nonatomic) BOOL isAnimating;
@end
Comme les extensions Swift n'acceptent pas les propriétés stockées comme celles-ci, je ne sais pas comment maintenir la même structure que le code Objc. Les propriétés stockées sont vraiment importantes pour mon application et je pense qu'Apple a dû créer une solution pour le faire dans Swift.
Comme l'a dit jou, ce que je cherchais était en fait d'utiliser des objets associés, alors j'ai fait (dans un autre contexte):
import Foundation
import QuartzCore
import ObjectiveC
extension CALayer {
var shapeLayer: CAShapeLayer? {
get {
return objc_getAssociatedObject(self, "shapeLayer") as? CAShapeLayer
}
set(newValue) {
objc_setAssociatedObject(self, "shapeLayer", newValue, UInt(OBJC_ASSOCIATION_RETAIN))
}
}
var initialPath: CGPathRef! {
get {
return objc_getAssociatedObject(self, "initialPath") as CGPathRef
}
set {
objc_setAssociatedObject(self, "initialPath", newValue, UInt(OBJC_ASSOCIATION_RETAIN))
}
}
}
Mais j'obtiens un EXC_BAD_ACCESS en faisant:
class UIBubble : UIView {
required init(coder aDecoder: NSCoder) {
...
self.layer.shapeLayer = CAShapeLayer()
...
}
}
Des idées?