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

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



