枚举(NSEnumerator)
集合类(如:NSArray、NSSet、NSDictionary等)均可获取到NSEnumerator, 该类是一个抽象类,没有用来创建实例的公有接口,通过objectEnumerator向请求枚举器,如果想从后向前浏览集合,可使用reverseObjectEnumerator方法。NSEnumerator的nextObject方法可以遍历每个集合元素,结束返回nil,通过与while结合使用可遍历集合中所有项。
示例1:
NSEnumerator *enumerator; = [array objectEnumerator];
id element;
while (element = [enumerator nextObject]) {
NSLog(@"I found %@", element);
}
示例2:
MBProgressHUD源码中通过枚举找到添加到view中最上层的HUD。
+(MBProgressHUD *)HUDForView:(UIView *)view {
NSEnumerator *subviewsEnum = [view.subviews reverseObjectEnumerator];
for (UIView *subview in subviewsEnum) {
if ([subview isKindOfClass:self]) {
return (MBProgressHUD *)subview;
}
}
return nil;
}