---
title: OSIterator
framework: kernel
role: symbol
role_heading: Class
path: kernel/ositerator
---

# OSIterator

The abstract superclass for Libkern iterators.

## Declaration

```occ
class OSIterator : OSObject
```

## Overview

Overview OSIterator is the abstract superclass for all Libkern C++ object iterators. It defines the basic interface for iterating and resetting. See OSCollection and OSCollectionIterator for more information. With very few exceptions in the I/O Kit, all Libkern-based C++ classes, functions, and macros are unsafe to use in a primary interrupt context. Consult the I/O Kit documentation related to primary interrupts for more information. OSIterator provides no concurrency protection.

## Topics

### Miscellaneous

- [getNextObject](kernel/ositerator/1808048-getnextobject.md)
- [isValid](kernel/ositerator/1808063-isvalid.md)
- [reset](kernel/ositerator/1808074-reset.md)

### Instance Methods

- [getMetaClass](kernel/ositerator/1416195-getmetaclass.md)
- [getNextObject](kernel/ositerator/1416192-getnextobject.md)
- [isValid](kernel/ositerator/1416199-isvalid.md)
- [reset](kernel/ositerator/1416194-reset.md)

## Relationships

### Inherits From

- [OSObject](kernel/osobject.md)

## See Also

### Collections

- [OSArray](kernel/osarray.md)
- [OSDictionary](kernel/osdictionary.md)
- [OSSet](kernel/osset.md)
- [OSOrderedSet](kernel/osorderedset.md)
- [OSCollection](kernel/oscollection.md)
- [OSCollectionIterator](kernel/oscollectioniterator.md)
