iOS 浅拷贝(Shallow Copy)与深拷贝(Deep Copy)

原创 2016年05月30日 16:16:44

系统对象的copy与mutableCopy方法

1、非集合类对象的copy与mutableCopy

系统非集合类对象指的是 NSString, NSNumber … 之类的对象。对immutable对象进行copy操作,是指针拷贝,mutableCopy操作时内容拷贝;对mutable对象进行copy和mutableCopy都是内容拷贝。用代码简单表示如下:

[immutableObject copy] // 浅拷贝  
[immutableObject mutableCopy] //深拷贝  
[mutableObject copy] //深拷贝  
[mutableObject mutableCopy] //深拷贝  

2、集合类对象的copy与mutableCopy

集合类对象是指NSArray、NSDictionary、NSSet … 之类的对象。对immutable对象进行copy,是指针拷贝,mutableCopy是内容拷贝;对mutable对象进行copy和mutableCopy都是内容拷贝。但是:集合对象的内容拷贝仅限于对象本身,对象元素仍然是指针拷贝。用代码简单表示如下:

[immutableObject copy] // 浅拷贝
[immutableObject mutableCopy] //单层深拷贝
[mutableObject copy] //单层深拷贝
[mutableObject mutableCopy] //单层深拷贝

相关文章推荐

python 浅拷贝(shallow copy) 深拷贝(deep copy)

浅拷贝(shallow copy) copy(x) 创建新的复合对象并通过引用复制x的成员来创建x的浅复制。 更加深层次说,它复制了对象,但对于对象中的元素,依然使用引用。 既然浅拷贝用的是...

.NET深入学习笔记(4):深拷贝与浅拷贝(Deep Copy and Shallow Copy)

 今天继续利用准备WSE安全开发文章的空闲时间,完善《.NET深入学习笔记》系列(基本都是.Net重要的知识点,我都做了详细的总结,是什么、为什么、和怎么实现)。想必很多人也接触过这两个概念。做过C+...
  • peng790
  • peng790
  • 2011年06月13日 15:48
  • 692

深拷贝与浅拷贝(Deep Copy and Shallow Copy)

今天继续利用准备WSE安全开发文章的空闲时间,完善《.NET深入学习笔记》系列(基本都是.Net重要的知识点,我都做了详细的总结,是什么、为什么、和怎么实现)。想必很多人也接触过这两个概念。做过C++...
  • fhzh520
  • fhzh520
  • 2012年01月31日 17:16
  • 938

Deep copy(深拷贝)和shallow copy(浅拷贝)的区别

deep copy 和shallow copy 都是用于对象之间的拷贝,简单来说,如果

深拷贝(deep clone)和浅拷贝(shallow copy)

这个又叫浅复制和深复制。 其相同点和区别: 相同点: 浅复制和深复制都是通过复制创建了一个新的对象,也就是 x.clone() != x 浅复制和深复制的对象所属的类是一致的,也就是 x.cl...

深浅拷贝:即Deep Copy和Shallow Copy的区别

首先,从copy开始说,简而言之,copy的目的就是生成一个新的实例,然后把其成员都按原实例赋值。 对于非指针型的成员,比如BOOL, int, float,这样的赋值可以直接进行。 但是...
  • re_xue
  • re_xue
  • 2015年11月16日 20:43
  • 188

实现深拷贝的类 Deep Copy

如果一个类中有指针对象,那么在拷贝这个类的对象的时候,默认的拷贝方式是只拷贝指针本身,而不重新构建并拷贝指针所指内容。这就叫做浅拷贝Shallow Copy。如果拷贝的方式是不仅仅拷贝指针,而且把指针...

difference between Python shallow copy and deep copy

A: Shallow copies duplicate as little as possible. A shallow copy of a collection is a copy of the ...
  • xluren
  • xluren
  • 2015年05月01日 13:07
  • 504

assignment,shallow copy,deep copy,引用,不可变对象

要了解assignment,shallow copy,deep copy这3个概念,就必须明白Python的所有变量都只是引用。 引用 比如 i =1; ii=i; iii=ii; >>> for...

Java Clone, Shallow Copy and Deep Copy

In java, though clone is ‘intended’ to produce a copy of the same object it is not guaranteed. Clone...
  • gmemai
  • gmemai
  • 2015年09月25日 14:46
  • 165
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS 浅拷贝(Shallow Copy)与深拷贝(Deep Copy)
举报原因:
原因补充:

(最多只允许输入30个字)