深拷贝||浅拷贝

浅拷贝:就是在已经有一块内存空间了(存储数据的),有一个指向这个空间的指针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;

}

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