【发布时间】:2016-02-05 11:05:45
【问题描述】:
对此似乎有很多困惑和不同的意见,我想知道,是否可以快速制作对象的浅拷贝而不是深拷贝。
我检查了 JAVA - http://www.jusfortechies.com/java/core-java/deepcopy_and_shallowcopy.php,它通过示例清楚地解释了浅拷贝和深拷贝之间的区别,但我没有快速获得示例。
我尝试了 initWithArray:copyItems: 来检查当我更改 copyItems 的布尔标志时它有什么不同,但我没有看到任何不同。我应该通过更改 copyItems 标志来区分浅拷贝或深拷贝,但我错了,它总是创建一个深拷贝。
请检查我下面的代码,我使用 initWithArray:copyItems: 通过将 copyItems: 设置为 true 将数组对象 arrayObject1 克隆到 arrayObject2。我将 arrayObject2 第 0 个字符串对象更改为新的字符串对象,并且 arrayObject2 第 0 个对象更改了,但 arrayObject1 第 0 个对象没有更改。而如果我通过将 copyItems: 分配为 false 来复制它,那么我也会得到相同的结果。
那么如何实现浅拷贝,如果不是通过 initWithArray:copyItems: 那么 copyItems: 标志对结果的影响。
func createAnArrayUsingArrayCopyItems(){
let name = "albort"
let arrayObject1 = NSArray.init(objects: name, 15)
let arrayObject2 = NSMutableArray.init(array: arrayObject1 as [AnyObject], copyItems: true)
arrayObject2[0] = "john"
print(arrayObject1)
print(arrayObject2)
}
【问题讨论】:
标签: ios arrays swift deep-copy shallow-copy