针对OC中数组遍历的几种方式我们来通过下面一个简单的程序来进行说明:
#import<Foundation/Foundation.h>
int main(int argc,const char * argv[])
{
@autoreleasepool
{
NSString *t1 = @"Hello";
NSString *t2 = @"welcome";
NSString *t3 = @"everyone";
//创建一个可变数组将这三个对象添加到数组中去;
NSMutableArray * arr1 = [NSMutableArrayarrayWithCapacity:10];
[arr1 addObject:t1];
[arr1 addObject:t2];
[arr1 addObject:t3];
//第一种方式:就像C语言中的for循环一样直接循环遍历;
for(int i = 0; i < [arr1 count]; i++)
{
NSLog(@"%@", [arr1 objectAtIndex:i]);
}
//第二种方式:这种方式相对简单,其中object是一个id类型的对象;
for(id object in arr1)
{
NSLog(@"%@", object);
}
//第三种方式:通过实现一个迭代器,相当于利用枚举进行遍历;
id elem;
NSEnumerator *en = [arr1 objectEnumerator];
while(elem = [en nextObject])
{
NSLog(@"%@", elem);
}
//第四种方式:通过BLOCK块进行遍历,是OC中自带的一种方法;
[arr1 enumerateObjectsUsingBlock:^(id obj, NSUInteger index, BOOL *stop)
{
NSLog(@"%d is %@", index, obj);
*stop = NO; //控制循环;
}];
}
return 0;
}
程序运行结果如下:
2015-08-19 16:39:20.889 TestArray[2283:303] Hello
2015-08-19 16:39:20.899 TestArray[2283:303] welcome
2015-08-19 16:39:20.900 TestArray[2283:303] everyone
2015-08-19 16:39:20.901 TestArray[2283:303] Hello
2015-08-19 16:39:20.902 TestArray[2283:303] welcome
2015-08-19 16:39:20.903 TestArray[2283:303] everyone
2015-08-19 16:39:20.949 TestArray[2283:303] Hello
2015-08-19 16:39:20.951 TestArray[2283:303] welcome
2015-08-19 16:39:20.952 TestArray[2283:303] everyone
2015-08-19 16:39:20.954 TestArray[2283:303] 0 is Hello
2015-08-19 16:39:20.956 TestArray[2283:303] 1 is welcome
2015-08-19 16:39:20.957 TestArray[2283:303] 2 is everyone