首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谁能告诉我分配和复制NSArray之间的区别?

谁能告诉我分配和复制NSArray之间的区别?
EN

Stack Overflow用户
提问于 2013-01-18 22:07:34
回答 2查看 131关注 0票数 3

1.Assignment

代码语言:javascript
复制
NSArray* a = xxxxxx;

NSArray* b;

b = a;

2.Copy

代码语言:javascript
复制
NSArray* a = xxxxxx;

NSArray* b;

b = [a copy];

我知道拷贝是“轻拷贝”,可变拷贝是“深拷贝”。

copy是复制内存地址,可变copy是复制内存对象。

但我不知道分配和复制是不同的。

是一样的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-18 22:15:52

This Apple文档很有帮助:

普通副本是一个浅层副本,它生成一个新的集合,该集合与原始对象共享对象的所有权。深度副本从原始对象创建新对象,并将这些对象添加到新集合中。

因此,在第一个示例中,b指向与a相同的NSArray实例。在第二个示例中,b指向一个新的NSArray实例,该实例包含对a所指向的数组中包含的相同对象的引用。

票数 2
EN

Stack Overflow用户

发布于 2013-01-18 22:20:50

b = a; b指向的地址与a指向的地址相同。因此,更改其中任何一个都是相同的。这就是所谓的call by reference

b = [a copy];正在创建b所指向的a的另一个对象。这里形成了两组不同的对象,因此更改其中任何一组对象都是相互独立的。这就像call by value一样。在这里,b将持有a的immutableCopy,即使a是可变的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14400612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档