创建和使用集
集 (collection) 是一个对象,它以特定方式储存其他对象,并且允许客户端访问那些对象。您通常将集作为方法和函数的参数进行传递,且通常获取集作为方法和函数的返回值。集经常包含值对象,但可以包含任何类型的对象。大多数集都具有对其包含的对象的强引用。Foundation 框架有几种类型的集,但其中有三种在 Cocoa Touch 和 Cocoa 编程中尤其重要:数组 (array)、字典 (dictionary) 和集合 (set)。这些集的类具有不可变变体和可
变变体。可变集允许您添加和移除对象,而不可变集仅可包含用来创建该集的那些对象。所有集都允许您枚举其内容——换言之,允许您依次检查它所包含的每个对象。 不同类型的集采用不同的方式组织它们所包含的对象:
NSArray 和 NSMutableArray——数组是多个对象的有序集。通过在数组中指定对象的位置(即索引)来访问对象。数组中首个元素的索引是 0(零)。
NSDictionary 和 NSMutableDictionary——字典将其条目储存为键-值对;键是一个唯一标识符,通常是字符串,而值则是您要储存的对象。通过指定键,您可以访问该对象。
NSSet 和 NSMutableSet——集合储存一组无序对象,其中每个对象仅出现一次。一般是将测试或过滤器应用到集合中的对象,来访问这些集合中的对象。
将对象按某种顺序储存在数组中
数组以有序序列储存对象。因此,一组对象的顺序很重要时,就该使用数组。例如,许多应用程序使用数组向表格视图中的行或菜单中的项目提供内容;索引为 0 的对象对应于第一行,索引为 1 的对象对应于第二行,依此类推。访问数组中对象的时间,比访问集合中对象的时间长。创建数组NSArray 类提供许多初始化程序和类工厂方法,用于创建数组和对数组进行初始化,但有几个方法尤其常见和实用。您可以使用arrayWithObjects:count: 和 arrayWithObjects: 方法(及其对应的初始化程序 initWithObjects:count: 和initWithObjects:),从一系列对象创建数组。使用前一种方法时,第二个参数指定第一个参数(静态 C 数组)中的对象数;使用后一种方法时,其参数为以逗号分隔的对象序列(以 nil 终止)。
// Compose a static array of string objects
NSString *objs[3] = {@"One", @"Two", @"Three"};
// Create an array object with the static array NSArray *arrayOne = [NSArray arrayWithObjects:objs count:3];