/* NSEnumerator.h
Copyright (c) 1995-2015, Apple Inc. All rights reserved.
*/
#import <Foundation/NSObject.h>
@class NSArray<ObjectType>;
NS_ASSUME_NONNULL_BEGIN
/*
* The fast enumeration protocol NSFastEnumeration is adopted and
* implemented by objects wishing to make use of a fast and safe
* enumeration style. The language "foreach" construct then can
* be used with such objects.
*
* The abstract class NSEnumerator itself is taught how to do this
* for convenience by using -nextObject to return items one at a time.
*/
typedef struct {
unsigned long state;
id __unsafe_unretained __nullable * __nullable itemsPtr;
unsigned long * __nullable mutationsPtr;
unsigned long extra[5];
} NSFastEnumerationState;
@protocol NSFastEnumeration
- (NSUInteger)countByEnumeratingWithStateNSFastEnumerationState *)state objectsid __unsafe_unretained [])buffer countNSUInteger)len;
@end
@interface NSEnumerator<ObjectType> : NSObject <NSFastEnumeration>
- (nullable ObjectType)nextObject;
@end
@interface NSEnumerator<ObjectType> (NSExtendedEnumerator)
@property (readonly, copy) NSArray<ObjectType> *allObjects;
@end |