Objective-C에서 Swift로 응용 프로그램을 전환하고 있는데, 여기에는 저장된 속성이있는 몇 가지 범주가 있습니다.
@interface UIView (MyCategory)
- (void)alignToView:(UIView *)view
alignment:(UIViewRelativeAlignment)alignment;
- (UIView *)clone;
@property (strong) PFObject *xo;
@property (nonatomic) BOOL isAnimating;
@end
Swift 확장은 이와 같은 저장된 속성을 허용하지 않으므로 Objc 코드와 동일한 구조를 유지하는 방법을 모르겠습니다. 저장된 속성은 내 앱에서 정말 중요하며 Apple이 Swift에서 솔루션을 만들 수있는 솔루션을 만들어야한다고 생각합니다.
jou가 말했듯이, 내가 찾고 있던 것은 실제로 관련 객체를 사용하는 것이 었으므로 (다른 맥락에서)했습니다.
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()
...
}
}
어떤 아이디어?