For( ; ; ) 、 For( in )、 enumerateObjectsUsingBlock 三者的执行效率依次提高!
详见:http://www.cnblogs.com/skyming/p/3977075.html
NSArray *arr = [NSArray arrayWithObjects:@"温志平", @"阿大志平", @"温水豆腐平", @"温志时代", @"温问问问平", @"谁的粉丝", @"是对的事", @"肉肉吧", @"以后拒绝", @"3好纠结", @"对的", nil];
[arr enumerateObjectsWithOptions:NSEnumerationConcurrent usingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog(@"index = %lu, %@", idx, [arr objectAtIndex:idx]);
}];
[arr enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog(@"index = %lu, %@", idx, [arr objectAtIndex:idx]);
}];
输出:
2016-03-28 11:40:52.932 AblumDemo[29184:910291] index = 0, 温志平
2016-03-28 11:40:52.933 AblumDemo[29184:910291] index = 4, 温问问问平
2016-03-28 11:40:52.932 AblumDemo[29184:910323] index = 1, 阿大志平
2016-03-28 11:40:52.933 AblumDemo[29184:910291] index = 5, 谁的粉丝
2016-03-28 11:40:52.933 AblumDemo[29184:910291] index = 6, 是对的事
2016-03-28 11:40:52.932 AblumDemo[29184:910324] index = 2, 温水豆腐平
2016-03-28 11:40:52.934 AblumDemo[29184:910291] index = 8, 以后拒绝
2016-03-28 11:40:52.932 AblumDemo[29184:910325] index = 3, 温志时代
2016-03-28 11:40:52.934 AblumDemo[29184:910323] index = 7, 肉肉吧
2016-03-28 11:40:52.934 AblumDemo[29184:910291] index = 10, 对的
2016-03-28 11:40:52.934 AblumDemo[29184:910324] index = 9, 3好纠结
2016-03-28 11:40:52.934 AblumDemo[29184:910291] index = 10, 对的
2016-03-28 11:40:52.934 AblumDemo[29184:910291] index = 9, 3好纠结
2016-03-28 11:40:52.934 AblumDemo[29184:910291] index = 8, 以后拒绝
2016-03-28 11:40:52.934 AblumDemo[29184:910291] index = 7, 肉肉吧
2016-03-28 11:40:52.934 AblumDemo[29184:910291] index = 6, 是对的事
2016-03-28 11:40:52.944 AblumDemo[29184:910291] index = 5, 谁的粉丝
2016-03-28 11:40:52.944 AblumDemo[29184:910291] index = 4, 温问问问平
2016-03-28 11:40:52.944 AblumDemo[29184:910291] index = 3, 温志时代
2016-03-28 11:40:52.945 AblumDemo[29184:910291] index = 2, 温水豆腐平
2016-03-28 11:40:52.945 AblumDemo[29184:910291] index = 1, 阿大志平
2016-03-28 11:40:52.945 AblumDemo[29184:910291] index = 0, 温志平
结论:enumerateObjectsUsingBlock 是一个并发的执行,这种情况仅限于NSEnumerationConcurrent倒序输出的情况!