浅拷贝:就是在已经有一块内存空间了(存储数据的),有一个指向这个空间的指针a,来修改这个空间内容,浅拷贝这个指针的意思就是在这个内存空间添加一个指针b,用来修改这个空间的值,b修改内存空间的值之后,当a访问这个内存空间的时候也跟着改变。
深拷贝:就是在已经有一块内存空间了(存储数据的),有一个指向这个空间的指针a,来修改这个空间内容,深拷贝这个指针的意思就是创建一个新的的内存空间(指针b)把之前内存空间的里面的属性复制,b修改内对应存空间的值之后,当a访问他自己对应的内存空间的里面的值所以不改变。
iOS的浅拷贝 NSString NSArray 等不可变的的 “=” “copy” 地址不改变
对象的自定义浅拷贝
-(id)copyWithZone:(NSZone*)zone{
NSObject *object = [[self class] allocWithZone:zone];
object.name = self.name;
object.age = [self.age copy];
return object;
}
iOS的深拷贝 NSString 实用“mutableCopy” 还有 NSMutableString NSMutableArray 等不可变的的 “mutableCopy” “copy” 地址改变
对象的自定义深拷贝
-(id)copyWithZone:(NSZone*)zone{
NSObject *object = [[self class] allocWithZone:zone];
object.name = [NSString stringWithFormat:@"%@",self.name];
object.age = [self.age mutableCopy];
return object;
}