使用场景:
我有一个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";
之前好多基础的东西,自己掌握的不好,总是遇到了才了解,😄😄😄