NSCoding を実装し、UIView オブジェクトへの参照を保持するクラスがあります...
class A: NSObject, NSCoding {
var view: UIView!
init(view: UIView) {
super.init()
commonInit(view)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit(/* <Need to pass the existing view somehow> */)
}
override func encodeWithCoder(aCoder: NSCoder) {
super.encodeWithCoder(aCoder)
}
}
渡されたのview
は、シリアル化する必要のない特定の重量のカスタム ビュー クラスです。多くのA
オブジェクトがあり、それらはすべてこの同じ custom を参照していますUIView
。しかし、状態の復元中に、のインスタンスを復元するために、それへの参照が必要ですA
。インスタンスはview
必要な時点で既に存在し、カスタム UIViewController は実際にデコード シーケンスを開始します。
override func decodeRestorableStateWithCoder(coder: NSCoder) {
// How to get self.customView to A.init?(coder aDecoder: NSCoder) where
// it is needed?
let view = self.customView
self.a = coder.decodeObjectForKey("aKey") as! A
}
しかし、既存のビューを で利用できるようにするにはどうすればよいA.init?(coder aDecoder: NSCoder)
でしょうか?