Objective-C 序列化与对象通信技术详解
1. 编码时的类替换
在某些情况下,类可能不想对自身进行归档。它可能是类簇的私有子类,或者为了与早期设计实现向前兼容,想以另一个类的形式进行归档。类在编码时可选择“伪装”成另一个类,或者提供一个完全不同的对象来代替它进行编码,有以下三种实现方式:
1. 重写 -classForCoder 方法 :编码时会向对象发送此消息,归档中对象的类由返回值决定。基类实现返回 [self class] ,使对象以实际类记录。若对象的 -classForCoder 方法返回不同类,解码时将创建该类的对象。注意, -encodeWithCoder: 方法中编码的数据必须与 -classForCoder: 返回的类兼容。 -classForCoder 影响所有归档类型,若只想对特定归档类型进行类替换,可重写 -classForArchiver 、 -classForKeyedArchiver 或 -classForPortCoder ,若未重写,这些方法返回 -classForCoder 的值。
2. 重写 -replacementObjectForCoder 方法 :该方法通常返回 self (即编码原始对象),若返回不同对象,则编码该代理对象。 -replacementObjectF
超级会员免费看
订阅专栏 解锁全文
2444

被折叠的 条评论
为什么被折叠?



