আমি অবজেক্টিভ-সি থেকে সুইফটে একটি অ্যাপ্লিকেশন স্যুইচ করছি, যা আমার কাছে সঞ্চিত বৈশিষ্ট্য সহ কয়েকটি বিভাগ রয়েছে, উদাহরণস্বরূপ:
@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()
...
}
}
কোন ধারনা?