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] //单层深拷贝

iPhone开发之Deep Copy和Shallow Copy的区别

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

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

浅拷贝(shallow copy) copy(x) 创建新的复合对象并通过引用复制x的成员来创建x的浅复制。 更加深层次说,它复制了对象,但对于对象中的元素,依然使用引用。 既然浅拷贝用的是...
  • muzilanlan
  • muzilanlan
  • 2016年01月08日 17:57
  • 1525

漫谈deepcopy(深拷贝)和shallowcopy(浅拷贝)

浅拷贝:只复制当前的对象,对该对象内部的引用(其他类对象作为自己的元素-也叫对其他对象的引用)不能复制(在堆内存中从新创建空间,内容相同,但地址不同)。 深拷贝:对对象内部的引用均复制,是创建一个新的...
  • u010111016
  • u010111016
  • 2016年06月15日 20:23
  • 2108

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

deep copy 和shallow copy 都是用于对象之间的拷贝,简单来说,如果
  • Andrewseu
  • Andrewseu
  • 2014年05月24日 18:03
  • 2302

iOS 浅拷贝和深拷贝的区别? copy和mutableCopy的区别?

1.概念       我们在声明一个变量时怎么给变量赋值呢?      第一种情况:将其它变量的值直接拿过来赋值,例如Person *person = 0x100104520;      Person...
  • vbirdbest
  • vbirdbest
  • 2016年07月09日 16:54
  • 1109

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

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

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

记得面试的时候面试官问我浅复制和深复制有什么区别。只用过python里可变数据类型的copy函数的我一脸懵逼,xjb说了一点,结果自然惨不忍睹。。我回来一查,原来他说的是copy库。。敲里吗啊,cop...
  • keyboardwarrior
  • keyboardwarrior
  • 2018年01月11日 13:41
  • 26

ios&object-c深浅拷贝解析

对于深浅拷贝自己一点理解,java中也类似,我觉得应爱基于如下这个原则: 1.浅拷贝是指拷贝对象时仅仅拷贝对象本身(包括对象中的基本变量),而不拷贝对象包含的引用指向的对象。 2.深拷贝不仅拷贝对象本...
  • finnfu
  • finnfu
  • 2016年09月22日 14:36
  • 656

shallow copy and deep copy (浅拷贝 vs 深拷贝)

a.浅拷贝(Shallow Copy):只复制对象的基本类型,对象类型,仍属于原来的引用。  b.深拷贝(Deep Copy):不仅复制对象的基本类,同时也复制原对象中的对象.完全产生新对象。 ...
  • mitkook
  • mitkook
  • 2012年10月15日 08:25
  • 558

NSString深浅复制的见解

由此可以看出:对源头是NSMutableString的字符串,retain仅仅是指针引用,增加了引用计数器,这样源头改变的时候,用这种retain方式声明的变量(无论被赋值的变量是可变的还是不可变的)...
  • u013770512
  • u013770512
  • 2014年05月22日 09:54
  • 1103
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS 浅拷贝(Shallow Copy)与深拷贝(Deep Copy)
举报原因:
原因补充:

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