当对一个对象需要进行copy操作的时候,自定义类需要实现copyWithZone
方法,结果找到一个通用方法代码如下:
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;
这个方法有个坑,memcpy
方法只会copy对象,而对对象的属性并没有进行copy,所以当再次对对象的属性进行操作时会崩溃。
测试结果如下:

还是老老实实对每个属性进行copy操作吧!!!!!!
有知道通用方法的可以在评论区留言。
网友评论