iOS | 数组添加相同的模型,修改一个的值其他的也会改变

需求

A页面有个数组arrayA  数组里放的是多个模型model
B页面有个数组arrayB
当A push B时,需要将arrayA传给arrayB
在B里改变arrayB的其中一个model的值

在返回的时候可以写个代理到A中,可以打印出,arrayA的值也会跟着修改了
这时去打印两个数组的模型地址,应该可以看出model的地址是一样的

那现在我们就要用到copy去生成一个新的实例了
我们自己定义的类需要在.h中遵循<NSCopying>协议,然后在.m中实现方法copyWithZone:(NSZone *)zone

- (id)copyWithZone:(NSZone *)zone{
    FnewModel *model = [FnewModel allocWithZone:zone];
    model.text = self.text;
    model.code = self.code;
    model.showtype = self.showtype;
    return model;
}

之后就可以在赋值的时候使用copy

for (FnewModel *model in savedArr) {
     FnewModel *newM = [model copy];
     [self.datas addObject:newM];
 }

这样改变arrayB中model的值时,arrayA的值就不会跟着修改了

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