アプリケーションを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()
...
}
}
何か案は?