NSEnumerator是一个抽象基类,其中定义了2个方法,使其子类实现:
- (nullable ObjectType)nextObject;
@property (readonly, copy) NSArray*allObjects;
其中nextObject是关键方法,它返回枚举里的下一个对象。每次调用改方法其,其内部结构都会更新,使得下一次调用方法时能返回下一个对象。等到枚举中全部的对象都已经返回之后,在调用就会返回nil,表示达到了枚举的末端。
Foundation框架中的collection都实现了这种遍历方式,例如:
NSArray *iosArray = @[@"L", @"O", @"V", @"E", @"I", @"O", @"S"];
NSEnumerator *enumerator = [iosArray objectEnumerator];//正向遍历
NSEnumerator *enumerator = [iosArray reverseObjectEnumerator];//反向遍历
id object;
while ((object = [enumerator nextObject]) != nil) {
//处理枚举器中的数据
NSLog(@"%@", object);
}
字典和set实现的方式相似,不同的是字典中有key和value,要根据具体的key取出value。同时提供了正向遍历和反向遍历。
- (nullable ObjectType)nextObject;
@property (readonly, copy) NSArray*allObjects;
其中nextObject是关键方法,它返回枚举里的下一个对象。每次调用改方法其,其内部结构都会更新,使得下一次调用方法时能返回下一个对象。等到枚举中全部的对象都已经返回之后,在调用就会返回nil,表示达到了枚举的末端。
Foundation框架中的collection都实现了这种遍历方式,例如:
NSArray *iosArray = @[@"L", @"O", @"V", @"E", @"I", @"O", @"S"];
NSEnumerator *enumerator = [iosArray objectEnumerator];//正向遍历
NSEnumerator *enumerator = [iosArray reverseObjectEnumerator];//反向遍历
id object;
while ((object = [enumerator nextObject]) != nil) {
//处理枚举器中的数据
NSLog(@"%@", object);
}
字典和set实现的方式相似,不同的是字典中有key和value,要根据具体的key取出value。同时提供了正向遍历和反向遍历。