如何在NSCoding状态恢复期间引用现有对象

时间:2016-05-31 07:02:50

标签: ios nscoding nscoder state-restoration

我有一个实现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个对象,它们都引用了相同的自定义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)

0 个答案:

没有答案