给定一个实现 NSCoding 的类,是否有理由不应该使用此模式来实现 copyWithZone: 的实现:
-(instancetype)copyWithZone:(NSZone *)zone{
return [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:self]];
}
最佳答案
只是效率 - 编码/解码成本和总内存占用。
假设您有一个带有四个不可变实例变量的对象。如果您实现自定义copy
,那么您将分配该对象的一个额外实例,然后赋予它所有四个实例变量的所有权。
如果您对其进行编码和解码,则会产生双向序列化的处理成本,并且最终会得到每个实例变量的新副本。
关于cocoa - 不使用现有 NSCoding 方法来实现 NSCopying 的任何理由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26372847/