Saya mengganti aplikasi dari Objective-C ke Swift, yang saya punya beberapa kategori dengan properti tersimpan, misalnya:
@interface UIView (MyCategory)
- (void)alignToView:(UIView *)view
alignment:(UIViewRelativeAlignment)alignment;
- (UIView *)clone;
@property (strong) PFObject *xo;
@property (nonatomic) BOOL isAnimating;
@end
Karena ekstensi Swift tidak menerima properti tersimpan seperti ini, saya tidak tahu bagaimana mempertahankan struktur yang sama dengan kode Objc. Properti yang disimpan sangat penting untuk aplikasi saya dan saya percaya Apple pasti telah menciptakan beberapa solusi untuk melakukannya di Swift.
Seperti yang dikatakan oleh jou, apa yang saya cari sebenarnya menggunakan objek terkait, jadi saya melakukannya (dalam konteks lain):
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))
}
}
}
Tapi saya mendapatkan EXC_BAD_ACCESS saat melakukan:
class UIBubble : UIView {
required init(coder aDecoder: NSCoder) {
...
self.layer.shapeLayer = CAShapeLayer()
...
}
}
Ada ide?