IOS深入学习(27)之Collection(会合)

IOS深入学习(27)之Collection(集合)

1 前言

  本文主要介绍了Foundation中的collection(集合类),以及他们之间的区别和各自的特点。

  转载请注明出处:http://blog.csdn.net/developer_zhang

2 详述

  collection(集合)是一个Foundation框架对象,它的主要角色是以数组,字典和集合的形式存储对象。

2.1 集合类

  主要的类--NSArray,NSSet和NSDictionary--有一些共有的特征:

·他们都只能存储对象类型,但是对象能够是rene类型的。例如NSArray的实例,能够包含cats,dogs,或者wombats或者这些的组成对象。

·他们能够维持对于他们内容的强引用。

·他们是不可变的,但是有一个可变的允许我们改变集合内容的子类。

·我们能够使用NSEnumerator或者快速枚举来迭代内容。

Cocoa还提供了3个类--NSPointArray,NSHashTable和NSMapTable--模仿这些类但是有以下不同之处:

·他们能够包含元素而不是对象。

·他们提供了内存管理的选项。

·他们是可变的。

由于Cocoa集合对象能够存储任何类型的对象(不想其他环境下的集合),我们能不创建特殊的集合类来包含一些特殊的类型。

2.2 排序方案

  集合存储和获取其他对象以一个特殊的排序*:

·NSArray和它的可变子类NSMutableArray使用0开始索引计数。在其他环境中,array可能被叫做vector,table或者list。

NSPointerArray是模仿NSMutableArray,但是它能够存储NULL值。我们能够直接设置指针数组的数量(传统的数组是不能的)。

·NSDictionary和它的可变子类NSMutableDictionary使用键-值对。在其他环境中,一个字典能够关联一个hash table或者hash map。

NSMapTable是继承子NSMutableDictionary但是提供了不同的选项,特别是在垃圾回收环境中支持若引用。

·NSSet和它的复合子类NSMutableSet提供了对象的无序存储。

Cocoa也提供了NSCountedSet,为NSMutableSet的子类并且记录了每个对象被加到集合中的次数。

NSHashTable是继承NSMutableSet但是提供了不同的选项,常常支持垃圾回收环境中的弱引用。

3 结语

  以上是所有内容,希望对大家有所帮助。