有没有理由给定一个实现NSCoding的类,copyWithZone的实现:不应该使用这种模式实现:
-(instancetype)copyWithZone:(NSZone *)zone{
return [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:self]];
}
答案 0 :(得分:1)
效率 - 编码/解码成本和总内存占用量。
假设您有一个包含四个不可变实例变量的对象。如果您实现自定义copy
,那么您将分配该对象的一个额外实例,然后赋予它对所有四个实例变量的所有权。
如果您对其进行编码和解码,那么双向序列化的处理成本将会降低,并且最终会得到每个实例变量的新副本。