如果只需要一层的的深度复制,可以使用通用实现,效率高,代码也少。ARC代码如下:
- (id)copyWithZone:(NSZone *)zone {
id copyInstance = [[[self class] allocWithZone:zone] init];
size_t instanceSize = class_getInstanceSize([self class]);
memcpy((__bridge void *)(copyInstance), (__bridge const void *)(self), instanceSize);
return copyInstance;
}
有一个问题,这样做会破坏掉引用计数,应该如何解决呢???