NSEnumerator가 으로 만들어졌습니다. 빠른 열거 형 (in/in 루프)을 사용할 수 있습니다. 원하면 이전 버전과의 호환성이라고 생각하십시오.
NSEnumerator를 사용하면 사용자 지정된 순서로 컬렉션을 열거 할 수 있습니다. 뒤로 :
NSEnumerator* enu = [array reverseObjectEnumerator];
id object;
while ((object = [enu nextObject])) {
...
}
(물론, NSEnumerator는 루프에서 당신이 더 나은 방법을 사용할 수 있습니다에 대한/지원하기 때문에 :
for (id object in [array reverseObjectEnumerator]) {
...
}
)
또는 NSEnumerator를 서브 클래 싱하여 자신 만의 반복자 클래스를 정의, 예
#import <Foundation/Foundation.h>
@interface RangeEnumerator : NSEnumerator {
int cur, len;
}
+(RangeEnumerator*)enumeratorWithLength:(int)length;
-(id)initWithLength:(int)length;
-(id)nextObject;
@end
@implementation RangeEnumerator
-(id)initWithLength:(int)length {
if ((self = [super init]))
len = length;
return self;
}
+(RangeEnumerator*)enumeratorWithLength:(int)length {
return [[(RangeEnumerator*)[self alloc] initWithLength:length] autorelease];
}
-(id)nextObject {
if (cur < len)
return [NSNumber numberWithInt:cur++];
else
return nil;
}
@end
int main() {
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
for (NSNumber* num in [RangeEnumerator enumeratorWithLength:12])
printf("%d\n", [num intValue]);
[pool drain];
return 0;
}