iOS开发-数组的深拷贝浅拷贝注意点

来源:互联网 发布:php高级工程师证书 编辑:程序博客网 时间:2024/05/03 03:29

今天写代码过程中遇到一个头疼的问题:可变数组经过深拷贝之后,变动新数组里面的元素,原来的数组也会跟着变。

做了一下实验,得到如下结论:

当数组元素是自定义类的时候,不管深浅拷贝,数组里面的元素地址是不变的。

DPNTextContent *content1 = [[DPNTextContent alloc] init];content1.content = @"1";DPNTextContent *content2 = [[DPNTextContent alloc] init];content1.content = @"2";DPNTextContent *content3 = [[DPNTextContent alloc] init];content1.content = @"3";NSMutableArray *arr1 = [NSMutableArray arrayWithObjects:content1,content2,content3, nil];NSMutableArray *arr2 = [NSMutableArray arrayWithArray:arr1];DPNTextContent *ccc = [arr2 lastObject];ccc.content = @"999";NSLog(@"%@,%@",arr1,arr2);

这个在编程中得小心了。最后以元素替换的方式达到了目的。

附上一个关于讲解深浅拷贝的文章,特别详尽:https://www.zybuluo.com/MicroCai/note/50592

1 0
原创粉丝点击