1. NSArray和NSDictionary,他们的实例就是为了存储其他对象而存在的。
NSArray是一个Cocoa类,用于存储对象的有序列表。你可以在NSArray中存储任意类型的对象:NSString、Car、Shape、Tire或者其他你想要存储的对象,甚至可以说其他数组或者字典对象。
NSArray类有两个限制。首先,它只能存储Objective-C的对象,而不能存储原始的C语言的数据类型,如 int,float,enum,struct和NSArray中的随机指针。同时,你也不能在NSArray中存储nil(对象的零值或NULL值)。
使用字面量格式 NSArray *array = @[@"one",@"two",@"three"] ;
2. 切分数组
如果你使用过Perl或Python这种脚本语言,那么可能已经习惯于将字符串切分成数组和将数组元素合并成字符串这种操作了。NSArray也可以执行这种操作。
使用-componentsSeparatedByString:可以切分NSArray,像这样:
NSString *string = @"oop:ack:bork:greeble:ponies";
NSArray *chunks = [string componentsSeparatedByString:@":"];
还可以用componentsJoinedByString:来合并NSArray中的元素并创建字符串。
string = [chunks componentsJoinedByString:@":-"];
3. 枚举
NSEnumerator *enumerator = [array objectEnumerator];// 如果你想要从后往前浏览某个集合,还有一个reverseObjectEnumerator方法可以使用。
while(id thingle = [enumerator nextObject]){}//对可变数组进行枚举操作时,有一点需要注意:你不能通过添加或者删除对象这类方式来改拜年数组的容量。如果你这么做了,枚举器就会出现混乱。
4. 快速枚举
for ( NSString *string in array){ } //这个循环体将会遍历数组中的每一个元素,并且用变量string 来存储某个数组值。
最新版本的苹果编译器(基于Clang和LLVM项目)为纯C语言添加了一个叫做代码块的特性。
-(void)enumerateObjectsUsingBlock:(void(^)(id obj,NSUInteger idx,BOOL *stop))block
[array enumerateObjectsUsingBlock:^(NSString *string,NSUInteger index,BOOL *stop){
}];
通过代码块可以让循环操作并发执行,而通过快速枚举,执行操作要一项项地线性执行。