copyWithZone 通用方法的坑

当对一个对象需要进行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,所以当再次对对象的属性进行操作时会崩溃。
测试结果如下:

copyWithZone 通用方法的坑_第1张图片
image.png

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

你可能感兴趣的:(copyWithZone 通用方法的坑)