任何不使用现有NSCoding方法实现NSCopying的原因

时间:2014-10-15 01:05:08

标签: cocoa cocoa-touch nscoding nscopying

有没有理由给定一个实现NSCoding的类,copyWithZone的实现:不应该使用这种模式实现:

-(instancetype)copyWithZone:(NSZone *)zone{
    return [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:self]];
}

1 个答案:

答案 0 :(得分:1)

效率 - 编码/解码成本和总内存占用量。

假设您有一个包含四个不可变实例变量的对象。如果您实现自定义copy,那么您将分配该对象的一个​​额外实例,然后赋予它对所有四个实例变量的所有权。

如果您对其进行编码和解码,那么双向序列化的处理成本将会降低,并且最终会得到每个实例变量的新副本。