iOS 创建的对象修改了之前的数据(深拷贝问题)

使用场景:
我有一个HomeModle的对象 self.model。现在需要 创建一个新的HomeModle,并且他的值和self.model一样,但是只需要修改其中的一个价格。

刚开始我使用的

    HomeModle *tempModel = self.model;
    tempModel.price = @"100";

最后测试发现修改了self.model的数据。是因为不是深拷贝的问题。需要对HomeModle进行<NSCopying> 协议,并在.m文件里实现协议方法

@interface HomeModle : NSObject <NSCopying>
- (id)copyWithZone:(NSZone *)zone {
    HomeModle *copy = [[[self class] allocWithZone:zone] init];
    if (copy) {
        // 在这里复制其他属性
        copy.price = self.price;
        copy.xxx = self.xxx;
    }
    return copy;
}

实现这些方法之后,就可以正常使用了

HomeModle *tempModel = [self.model copy];
tempModel.price = @"100";

之前好多基础的东西,自己掌握的不好,总是遇到了才了解,😄😄😄

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容