- Statement(可正向反向)-用index递增或递减的方式去抓取内容(最没效率)
//NSArray
NSArray* arrayItems = @[@1,@2,@3,@4,@5,@6,@7,@8,@9,@10];
for (int i = 0; i < [arrayItems count]; ++i) {
NSNumber* number = [arrayItems objectAtIndex:i];
}
//NSDictionary
NSDictionary* dicItems = @{@1:@"1",@2:@"2",@3:@"3",@4:@"4",@5:@"5",@6:@"6",@7:@"7"};
NSArray* keys = [dicItems allKeys];
for (int i =0; i< [keys count]; ++i) {
NSNumber* keyNumber = [keys objectAtIndex:i];
}
- For in-这种方式可以直接抓到value,但若需要index还是要另外使用另外一个API,或是一开始用区域变数计算进去回圈的次数
//NSArray
NSArray* arrayItems = @[@1,@2,@3,@4,@5,@6,@7,@8,@9,@10];
for (NSNumber* number in arrayItems){
}
//NSDictionary
NSDictionary* dicItems = @{@1:@"1",@2:@"2",@3:@"3",@4:@"4",@5:@"5",@6:@"6",@7:@"7"};
for (NSNumber* keyNumber in [dicItems allKeys]){
}
- Block(可正向反向)-个人比较偏爱用这种方式,NSArray也是这种方式最快速
//NSArray
NSArray* arrayItems = @[@1,@2,@3,@4,@5,@6,@7,@8,@9,@10];
[arrayItems enumerateObjectsUsingBlock:^(NSNumber* number, NSUInteger idx, BOOL *stop) {
}];
//NSDictionary
NSDictionary* dicItems = @{@1:@"1",@2:@"2",@3:@"3",@4:@"4",@5:@"5",@6:@"6",@7:@"7"};
[dicItems enumerateKeysAndObjectsUsingBlock:^(NSNumber* keyNumber, NSString* value, BOOL *stop) {
}];
- Enumerator(可正向反向)-这种方式我比较不常用,但也比第1、2种快多了
//NSArray
NSArray* arrayItems = @[@1,@2,@3,@4,@5,@6,@7,@8,@9,@10];
NSEnumerator* enumerator = [arrayItems objectEnumerator];
NSNumber* number;
while (number =[enumerator nextObject]) {
}
//NSDictionary
NSDictionary* dicItems = @{@1:@"1",@2:@"2",@3:@"3",@4:@"4",@5:@"5",@6:@"6",@7:@"7"};
NSEnumerator* enumerator = [dicItems keyEnumerator];
NSNumber* keyNumber;
while (keyNumber = [enumerator nextObject]) {
}
以上Demo网址如下: