在阅读第三方类MBProgressHUD时,看到这样的一个函数,NSEnumerator平常用的很少。
+ (MB_INSTANCETYPE)HUDForView:(UIView *)view {
NSEnumerator *subviewsEnum = [view.subviews reverseObjectEnumerator];
for (UIView *subview in subviewsEnum) {
if ([subview isKindOfClass:self]) {
return (MBProgressHUD *)subview;
}
}
return nil;
}
NSEnumerator是一个抽象类,集合类(如:NSArray、NSSet、NSDictionary等)均可获取到NSEnumerator,常用来遍历数组或者字典等。比如
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
[[Photo alloc] init], @"p1",
[[Photo alloc] init], @"p2",
[[Photo alloc] init], @"p3", nil];
//allValues 只能获取字典中值的数组列表,注意列表是无序的。
NSEnumerator *myEnumerator = [[dict allValues] objectEnumerator];
Photo *photo;
while((photo = [myEnumerator nextObject]))
{
[photo draw];
}