02-Copy

不足之处,欢迎指正交流。。。

  当用 = 将一个变量的值赋值给另外一个变量的时候就会出现一般意义上的copy操作,或者说是一般赋值操作。

myInt2 = myInt1

这句表达式,是指将

myInt1

所在内存空间中的Integer值赋值给myInt2所在内存空间中。因为copy函数的原因,内存空间中两块独立的内存中存储着同一个值。

但是如果对Core Foundation对象运用这一方法,有可能并没有对自己本身进行一个拷贝和复制,而只是对该对象进行了引用。

例如,刚接触到Core Foundation的人有可能会想着通过

myCFString2 = myCFString1

这一表达式来对CFString对象进行复制操作。

但是这一操作实际上并没有对这个string数据进行复制。因为这二者都有CFStringRef类型,这个表达式只能对对象产生一个引用。因为使用了copy操作,创建了两个对CFString对象的引用。这种复制操作是很快的,因为只是复制了对对象的引用,但是如果对一个可变对象使用这种操作的话是很危险的。对于在一个程序中所使用的全局变量,如果在这个程序的其中一个部分里是通过这个变量的引用来改变这个对象,那么在这个程序里的其他部分使用这个对象引用的,就没有机会知道原来的值的改变。

  如果想要对一个对象进行复制,就需要使用Core Foundation所提供的方法。我们继续以CFString为例,应该使用CFStringCreateCopy来创建一个与最原始的变量相同的对象。Core Foundation不仅有CreateCopy还有CreateMutableCopy方法来返回一个可以修改的可变类型的变量。

浅复制

复制那些可以容纳包含其他对象的集合对象的时候,必须小心谨慎。当用= 来对那些对象进行复制操作的时候,仅仅是对那个对象的引用进行了复制。对比基本数据类型中的CFString和CFData,CreateCopy对CFArray和CFSet这种集合类对象提供了浅拷贝的方法。对于这些数据类型来说,浅拷贝就意味着会创建一个新的集合类对象,但是原始对象中所包含的内容并没有被复制出来 —— 仅仅是对这个对象的引用进行了复制。这种复制是有用的如果你有一个不可变数组,并且你像对这个数组进行重新布置的时候。在这种情况下,你没有必要复制这个数组中所包含的对象,因为你将会对他们进行改变 ,就没有必要利用这份内存,你只是想要这个包含对象的集合进行改变。当对基本数据类型进行复制的时候同样会存在一样的问题。

—— 浅拷贝是对内存地址的拷贝,是让目标对象指针和源对象指向同一块内存区域。浅拷贝是对对象的简单拷贝,让几个对象公用同一块内存,当这块内存销毁的时候,指向这块内存的几个指针需要重新定义才能继续使用,否则会成为野指针。在iOS里,retain会对对象进行技术,当对象release的时候由于计数器的存在,并不会轻易的销毁内存。

深拷贝

深拷贝是指拷贝对象的具体内容,而内存地址是自主分配的,拷贝结束之后,两个对象虽然存的值是相同的,但是内存地址不一样,两个对象也互不影响,互不干涉。

copy 与 retain 的区别:

copy 是创建一个新对象,retain 是创建一个指针,引用对象计数加一。 copy属性标识两个对象内容相同,新的对象retain count为1, 与旧有对象引用计数无关,旧有对象没有变化。copy减少对象对上下文的依赖。

时间: 2024-10-12 16:35:22

02-Copy的相关文章

S2---深入.NET平台和C#编程的完美总结

1.NET简单解说 l 面向对象提升 OOP(Object Oriented  Programming)面向对象编程 AOP:(Aspache  Oriented Programming):面向切面编程 OOD(Object Oriented  Designer)面向对象设计(架构师)   3万/month OOA(Object Oriented  Analysis)面向对象分析  (分析师) 10万/month DBA(Database Administrator,简称DBA) l 泛型集合对

小学生之解析XML应用

1.什么是XML? 解析:XML:Extensible Markup Language(可扩展标记语言) HTML:HyperLink Text  Markup Language(超文本标记语言)  2. xml文件和html文件的区别? 解析:01.xml严格区分大小写,html不区分 02.xml不是编译语言,xml和html都是解释型语言 03.html语言负责显示数据,而Xml文件就是专门用来存储数据 注:如果我们在书写xml文件的时候,如果自己用的encoding="utf-8&quo

黑马IOS 第2期基础+就业班(完整)

├─01天-ScrollView│  └─视频│          01.UIKit复习&代理介绍.mp4│          02.查看大图&自动布局.mp4│          03.ScrollView常用属性.mp4│          04.喜马拉雅.mp4│          05.放大和缩小.mp4│          06.运行循环简单演示.mp4│          07.倒计时界面布局.mp4│          08.NSTimer简单应用.mp4│         

第八章xml学习

1.ASP.NET和JSP的关系 ASP.NET 和JSP都是用来开发动态网站的技术,只不过ASP.NET是通过c#语言来操作的, 而JSP是通过Java语言来操作的. 2.为什么学习XML? 01.跨平台(操作系统),就是在windowns操作系统和Linux操作系统上均可以被解析 02.跨开发语言 03.超市管理系统      一家店   Access(文件型数据库) 每天看一下每个门市销售业绩         SQL Server数据库      Oralce 先将Access中的数据表导

第八章 可扩展标记语言XML

1.什么是XML? XML:Extensible Markup Language(可扩展标记语言) HTML:HyperLink Text  Markup Language(超文本标记语言) 2.xml文件和html文件的区别? 01.xml严格区分大小写,html不区分 02.xml不是编译语言,xml和html都是解释型语言 03.html语言负责显示数据,而Xml文件就是专门用来存储数据 3.xml书写注意点 1.xml文件严格区分大小写  2.标签配对出现  3.xml文档只能有一个根节

百度刚放假啊数据库风口浪尖萨拉疯了

http://www.ebay.com/cln/l_x5585/2015.02.11/176746639012 http://www.ebay.com/cln/jiacha_boryk/2015.02.11/176837188016 http://www.ebay.com/cln/gbnlin0/2015.02.11/176837189016 http://www.ebay.com/cln/j_j2841/2015.02.11/177066749015 http://www.ebay.com/c

百度房间爱师傅卡卡是快乐疯了;爱死

http://www.ebay.com/cln/shx9479/-/177007606013/2015.02.11 http://www.ebay.com/cln/genqi12/-/176846034010/2015.02.11 http://www.ebay.com/cln/seyyon2/-/176906811016/2015.02.11 http://www.ebay.com/cln/wcn5971/-/176846032010/2015.02.11 http://www.ebay.co

百度和房价是否健康教案上开发

http://www.ebay.com/cln/l.kuan2/-/167247714018/2015.02.10 http://www.ebay.com/cln/setlia-3616/-/167086016019/2015.02.10 http://www.ebay.com/cln/pen-y77/-/167086017019/2015.02.10 http://www.ebay.com/cln/yua-me2/-/167399441016/2015.02.10 http://www.eba

百度电话费健身房拉伸件礼服加拉斯减肥

http://www.ebay.com/cln/cnli_c90nphs5e/-/167379958016/2015.02.07 http://www.ebay.com/cln/gaw4612/-/167226239018/2015.02.07 http://www.ebay.com/cln/re_len4/-/167263594010/2015.02.07 http://www.ebay.com/cln/ta.ku83/-/167162702017/2015.02.07 http://www.

百度回复金卡是减肥拉进来收付款

http://www.ebay.com/cln/cnli_c90nphs5e/-/167379958016/2015.02.08 http://www.ebay.com/cln/gaw4612/-/167226239018/2015.02.08 http://www.ebay.com/cln/re_len4/-/167263594010/2015.02.08 http://www.ebay.com/cln/ta.ku83/-/167162702017/2015.02.08 http://www.