मैं ऑब्जेक्टिव-सी से स्विफ्ट में एक एप्लिकेशन को स्विच कर रहा हूं, जिसमें मेरे पास संग्रहीत संपत्तियों के साथ कुछ श्रेणियां हैं, उदाहरण के लिए:
@interface UIView (MyCategory)
- (void)alignToView:(UIView *)view
alignment:(UIViewRelativeAlignment)alignment;
- (UIView *)clone;
@property (strong) PFObject *xo;
@property (nonatomic) BOOL isAnimating;
@end
चूंकि स्विफ्ट एक्सटेंशन इन जैसे संग्रहीत गुणों को स्वीकार नहीं करते हैं, मुझे नहीं पता कि ओब्जेक्ट कोड के समान संरचना को कैसे बनाए रखा जाए। मेरे ऐप के लिए संग्रहीत गुण वास्तव में महत्वपूर्ण हैं और मेरा मानना है कि ऐप्पल ने स्विफ्ट में इसे करने के लिए कुछ समाधान बनाया होगा।
जैसा कि जौ ने कहा, जो मैं देख रहा था वह वास्तव में संबद्ध वस्तुओं का उपयोग कर रहा था, इसलिए मैंने (एक और संदर्भ में) किया:
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))
}
}
}
लेकिन मुझे ऐसा करते समय एक EXC_BAD_ACCESS मिलता है:
class UIBubble : UIView {
required init(coder aDecoder: NSCoder) {
...
self.layer.shapeLayer = CAShapeLayer()
...
}
}
कोई विचार?