針對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