`
blessdyb
  • 浏览: 236666 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Objective-C中Collections等类的深复制

阅读更多

        所有的开发语言中都会遇到对象的复制问题,通常复制分为浅复制与深复制两种。以Objective-C中的Collections为例,在我们复制一个Collections的具体对象时,比如一个NSArray的对象,我们使用-copy,这样的结果是一个浅层次的复制,在我们对于原对象进行了改动后,所有使用-copy得到的对象都会被改动,这是由于源对象与当前对象是共享一个对象值的。

        如果我们想达到深层次复制,Collections也为我们提供了一些方法。仍然以NSArray为例,我们使用-initWithArray:copyItems:就可以实现这种需求。

 

NSArray *original = [NSArray arrayWithObjects:@″Mimeoscope″, @″Cyclostyle″,nil];
NSArray *shallowCopy = [original copy];
NSArray *deepCopy = [[NSArray alloc] initWithArray:original copyItems:YES];
 

如上,shallowCopy, 与original指向的是同一个对象. 而deepCopy, 却是一个包含了original值的新的NSArray对象。这就完成了深复制。同样在The NSDictionary与 NSSet中也有相应的方式实现,分别为
–initWithDictionary:copyItems: 与 –initWithSet:copyItems: methods.

1
0
分享到:
评论
2 楼 ysongcn 2010-08-07  
http://www.techotopia.com/index.php/Copying_Objects_in_Objective-C

NSKeyedArchiver 压缩一下,再用UnArchiver 解一下

不知哪种好一些?

1 楼 ysongcn 2010-08-07  
copy后MutableString 会变成不可变的

相关推荐

    《Objective-C2.0程序设计(原书第2版)》_中文完整版

    在这一部分中,还涉及了函数、数组、结构体和指针等C语言元素,因为Objective-C建立在C语言之上,所以对这些基础概念的掌握对于学习Objective-C至关重要。 第二部分关注于Foundation框架的详细阐述。Foundation框架...

    Programming in Objective-C, 第四版,ePub格式

    Programming in Objective-C, 第四版,ePub格式方便在iPad看。 第四版主要更新了 iOS5 与 ARC 的内容,与最新的 Xcode 4.5 匹配。 目录: Table of Contents 1 Introduction Part I: The Objective-C Language 2...

    apache-collections-commons-collections-3.1.jar.zip

    标签:apache-collections-commons-collections-3.1.jar.zip,apache,collections,commons,collections,3.1,jar.zip包下载,依赖包

    Objective-C编程(第4版)

    2 Programming in Objective-C 7 3 Classes, Objects, and Methods 27 4 Data Types and Expressions 51 5 Program Looping 71 6 Making Decisions 93 7 More on Classes 127 8 Inheritance 151 9 Polymorphism, ...

    commons-beanutils-bean-collections.jar

    commons-beanutils-bean-collections-1.7.0.jar

    commons-beanutils、commons-collections、commons-collections等常用jar 包下载

    - 工具类:用于集合初始化、迭代器增强、函数对象、堆栈和队列操作等。 - 高效的集合算法:如查找、排序、合并等。 - 集合框架的桥接:允许与其他集合框架(如Google Guava)互操作。 3. **Apache Commons ...

    commons-collections.jar

    commons-collections-20040616.jar, commons-collections-3.2-osgi.jar, commons-collections-3.2-sources.jar, commons-collections-3.2.1.jar, commons-collections-3.2.2-javadoc.jar, commons-collections-3.2.2...

    commons-collections-3.2.2-API文档-中文版.zip

    赠送jar包:commons-collections-3.2.2.jar; 赠送原API文档:commons-collections-3.2.2-javadoc.jar; 赠送源代码:commons-collections-3.2.2-sources.jar; 赠送Maven依赖信息文件:commons-collections-3.2.2....

    programming with objective c

    类别(Categories)是Objective-C中的一个特性,用于在不修改原始类定义的情况下扩展现有类的功能。类别可以添加新的方法到现有类上,从而增强其功能或改变其行为,而不会影响其他使用该类的地方。 #### Protocols ...

    Learning Cocoa with Objective-C, 4th Edition

    Get up to speed on Cocoa and Objective-C, and start developing applications on the iOS and OS X platforms. If you don’t have experience with Apple’s developer tools, no problem! From object-oriented...

    [Cocoa] Cocoa Objective-C 开发学习手册 第4版 (英文版)

    [奥莱理] Cocoa Objective-C 开发学习手册 第4版 (英文版) [奥莱理] Learning Cocoa with Objective-C 4th Edition (E-Book) ☆ 图书概要:☆ You’ll learn how to work with the Xcode IDE, Objective-C’s ...

    commons-collections4-4.1-API文档-中文版.zip

    赠送jar包:commons-collections4-4.1.jar; 赠送原API文档:commons-collections4-4.1-javadoc.jar; 赠送源代码:commons-collections4-4.1-sources.jar; 赠送Maven依赖信息文件:commons-collections4-4.1.pom;...

    Programming in Objective-C Fourth Edition (2011)

    最新的 Programming in Objective-C 第四版!(Epub格式) PC用户可以用filefox的epub插件或Adobe Digital Edition 打开 1 Introduction Part I The Objective-C Language  2 Programming in Objective-C  ...

    commons-collections-3.2.2.jar

    apache-common系列中的重要的成员:apache-common-collections。包中对Java中的集合类进行了一定的补充,定义了一些全新的集合,当然也是实现了Collection接口的,比如Bag,BidiMap。同时拥有新版本的原有集合,比如...

    aduna-commons-collections-2.2.jar.zip

    7. **MapUtils和ListUtils**:这两个工具类提供了大量静态方法,方便开发者对Map和List进行操作,如创建默认Map、深度复制Map、列表排序等。 8. **泛型支持**:尽管2.2版本是在Java泛型引入之前发布的,但Aduna ...

    commons-beanutils-bean-collections-1.8.3.jar

    commons-beanutils-bean-collections-1.8.3.jar

    commons-beanutils-bean-collections.jar下载

    commons-beanutils-bean-collections.jar commons-beanutils-bean-collections.jar

    collections-generic-4.01_and_looks-2.1.4

    该文件里包含两个.jar包: collections-generic-4.01.jar和looks-2.1.4.jar, 引入collections-generic-4.01.jar: 右击工程--》Build path ——》Add External JAR-->选中collections-generic-4.01.jar --》OK 在源...

    commons-collections-3.2.2-API文档-中英对照版.zip

    赠送jar包:commons-collections-3.2.2.jar; 赠送原API文档:commons-collections-3.2.2-javadoc.jar; 赠送源代码:commons-collections-3.2.2-sources.jar; 赠送Maven依赖信息文件:commons-collections-3.2.2....

    commons-collections-3.2.2-

    Apache Commons Collections是一个Java库,包含了丰富的集合操作工具和算法,为Java平台的开发提供了大量的实用类和接口。这个"commons-collections-3.2.2-"版本是该库的一个特定发行版,主要用于解决WebLogic服务器...

Global site tag (gtag.js) - Google Analytics