Sto cambiando un'applicazione da Objective-C a Swift, che ho un paio di categorie con proprietà memorizzate, ad esempio:
@interface UIView (MyCategory)
- (void)alignToView:(UIView *)view
alignment:(UIViewRelativeAlignment)alignment;
- (UIView *)clone;
@property (strong) PFObject *xo;
@property (nonatomic) BOOL isAnimating;
@end
Poiché le estensioni Swift non accettano proprietà memorizzate come queste, non so come mantenere la stessa struttura del codice Objc. Le proprietà memorizzate sono davvero importanti per la mia app e credo che Apple abbia creato una soluzione per farlo in Swift.
Come ho detto jou, quello che stavo cercando era effettivamente usare oggetti associati, quindi ho fatto (in un altro contesto):
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))
}
}
}
Ma ottengo un EXC_BAD_ACCESS quando faccio:
class UIBubble : UIView {
required init(coder aDecoder: NSCoder) {
...
self.layer.shapeLayer = CAShapeLayer()
...
}
}
Qualche idea?