- (NSEnumerator<ObjectType> *)objectEnumerator;//正向遍历
- (NSEnumerator<ObjectType> *)reverseObjectEnumerator;//反向遍历
NSEnumerator是一个抽象基类,其中定义了2个方法,使其子类实现:
- (nullable ObjectType)nextObject;
@property (readonly, copy) NSArray*allObjects;
其中nextObject是关键方法,它返回枚举里的下一个对象。每次调用改方法其,其内部结构都会更新,使得下一次调用方法时能返回下一个对象。等到枚举中全部的对象都已经返回之后,在调用就会返回nil,表示达到了枚举的末端。
1.利用 NSEnumerator实现NSArray的循环遍历:
//NSEnumerator实现循环遍历
NSEnumerator *enumerator = [array1 objectEnumerator];
id object;
while ((object = enumerator.nextObject) != nil) {
NSLog(@"%@",object);
}
for (int i = 0; i < iosArray.count; i++) {
//处理数组中数据
NSLog(@"%@", iosArray[i]);
}
3.快速遍历
NSArray *iosArray = @[@"L", @"O", @"V", @"E", @"I", @"O", @"S"];
for (NSString *obj in iosArray) {
//处理数组中的数据
NSLog(@"%@", obj);
}
4.基于块的遍历方式
NSArray *iosArray = @[@"L", @"O", @"V", @"E", @"I", @"O", @"S"];
[iosArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog(@"%@", obj);
if ([obj isEqualToString:@"E"]) {
*stop = YES;
}
}];