19、Objective-C 序列化与对象通信技术详解

Objective-C 序列化与对象通信技术详解

1. 编码时的类替换

在某些情况下,类可能不想对自身进行归档。这可能是因为它是类簇的私有子类,或者为了与早期设计实现向前兼容,希望将自身归档为另一个类。类在编码时可选择“伪装”成另一个类,或提供一个完全不同的对象来替代自身进行编码,有三种实现编码时替换的方法:
- 重写 -classForCoder 方法 :编码时会向对象发送此消息,归档中对象的类由返回值决定。基类实现返回 [self class] ,会按对象实际类记录。若返回不同类,解码时将创建该类的对象。需注意, -encodeWithCoder: 方法中编码的数据必须与 -classForCoder: 返回的类兼容。此方法影响所有归档类型,若想将类替换限制在特定归档类型,可重写 -classForArchiver -classForKeyedArchiver -classForPortCoder ,若未重写,这些方法返回 -classForCoder 的值。
- 重写 -replacementObjectForCoder 方法 :该方法通常返回 self (即编码原始对象),若返回不同对象,则会编码该代理对象。 -replacementObjectForCoder: 会对所有归档编码执行替换,也可重写 -replacementObj

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值