一、前言 这个星期参加了一个面试,面试中问到深浅拷贝的区别,然后我就简单了讲述了它们的之间的区别,然后面试官又继续问,如何实现一个深拷贝呢?当时只回答回答了一种方式,就是使用反射,然后面试官提示还可以通过反序列化和表达树的方式。然后又继续问,如果用反射来实现深拷贝的话,如何解决互相引用对象的问题呢....
在ObjC中,什么是深浅拷贝?深浅拷贝分别指深拷贝和浅拷贝,即mutableCopy和copy方法。copy复制一个不可变对象,而mutableCopy复制一个mutable可变对象。什么时候用到深浅拷贝?下面举几个例子说明。非容器类对象如NSString,NSNumber等一类对象示例1:1234...
分类:
其他好文 时间:
2015-03-18 10:18:25
阅读次数:
149
深浅拷贝的区别:
深拷贝 拷贝 内容
浅拷贝 拷贝 地址
注:当对象str1在常量区时
①对不可变字符串NSString对象进行copy
NSString *str1 = @"Hello"; //str1 -- 常量区
NSLog(@"%p", str1);//0x100002048
//co...
分类:
移动开发 时间:
2015-01-21 18:11:55
阅读次数:
153
最近看一些书籍,深拷贝和浅拷贝的字样,总是浮现在眼前,于是乎整理了一下,关于java的深浅拷贝原理和实现。1.什么是深/浅拷贝?浅拷贝:对目标对象的基本数据类型值的复制和引用类型的地址的复制;深拷贝:对目标对象的基本数据类型值的复制以及应用类型值复制(专业点称之为..
分类:
编程语言 时间:
2015-01-20 12:11:22
阅读次数:
162
copy模块中有两个方法,copy.copy()和copy.deepcopy,这两个方法分别是用来实现浅拷贝和深拷贝。所谓浅拷贝就是只拷贝引用,拷贝后生成的两个变量仍然是同一个对象,即其中一个变化了,另一个也跟着变化。而对于深拷贝,则是拷贝数据,生成的两个变量是不同的对象,他们之间的变化互不影响。但有一点要注意,copy模块的两个拷贝方法中针对的深浅拷贝说的是待拷贝对象的元素,即不管是copy()方法还是deepcopy()方法,待拷贝对象本身都是深拷贝,生成的是两个不同的对象,举个例子说明:...
分类:
编程语言 时间:
2014-12-24 20:13:04
阅读次数:
277
网络请求总结,深浅拷贝copy和mutableCopy,SDWebImage图像下载第三方框架...
分类:
移动开发 时间:
2014-12-23 17:23:10
阅读次数:
151
要说清楚Python中的深浅拷贝,需要搞清楚下面一系列概念:变量-引用-对象(可变对象,不可变对象)-切片-拷贝(浅拷贝,深拷贝)【变量-对象-引用】在Python中一切都是对象,比如说:3, 3.14, 'Hello', [1,2,3,4],{'a':1}......甚至连type其本身都是对象,...
分类:
编程语言 时间:
2014-12-21 19:22:39
阅读次数:
311
要说明Python中的深浅拷贝,可能要涉及到下面的一系列概念需要简单说明下:
变量-引用-对象(可变对象,不可变对象)切片-拷贝-浅拷贝-深拷贝
【变量-对象-引用】
在Python中一切都是对象,比如说: 3, 3.14, 'Hello', [1,2,3,4],{'a':1}......
甚至连type其本身都是对象,type对象
Python中变量与C/C++/Java中不同,它是指对象的引用
单独赋值: 比如说:
>>> a = 3
在运行a=3后,变量a变成了对象3的一个引用。在内部,变量事...
分类:
编程语言 时间:
2014-12-11 00:17:34
阅读次数:
310
1.IOS Copy什么时候用?在O-C里面有个值对象的概念,当你新定义一个属性是值对象时就应该用copy来修饰。那么都什么对象是值对象呢?值对象是指封装了基本值(属于 C 数据类型)且提供与该值相关的服务的对象。值对象以对象形式表示标量类型。Foundation 框架向您提供了以下类(这些类产生对...
分类:
其他好文 时间:
2014-12-05 22:39:06
阅读次数:
174
这里主要侧重于集合类的深浅拷贝,主要事因为工作的时候遇到这个问题。有不足的地方欢迎指正,转载请注明。首先我们需要有这样的一个前提:[array addObject:obj];这样obj的引用计数会增加1,如果使用remove则obj的引用计数会减一。ios对集合的内存处理就是这样的。那么,假设obj...
分类:
移动开发 时间:
2014-10-09 19:03:07
阅读次数:
142