---
title: OSCollection
framework: kernel
role: symbol
role_heading: Class
path: kernel/oscollection
---

# OSCollection

The abstract superclass for Libkern collections.

## Declaration

```occ
class OSCollection : OSObject
```

## Overview

Overview OSCollection is the abstract superclass for all Libkern C++ object collections. It defines the necessary interfaces for managing storage space and iterating through an arbitrary collection (see the OSIterator and OSCollectionIterator classes). It is up to concrete subclasses to define their specific content management functions. Use Restrictions 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. OSCollection provides no concurrency protection; it's up to the usage context to provide any protection necessary. Some portions of the I/O Kit, such as IORegistryEntry, handle synchronization via defined member functions for setting properties.

## Topics

### Miscellaneous

- [copyCollection](kernel/oscollection/1808206-copycollection.md)
- [ensureCapacity](kernel/oscollection/1808212-ensurecapacity.md)
- [flushCollection](kernel/oscollection/1808219-flushcollection.md)
- [getCapacity](kernel/oscollection/1808225-getcapacity.md)
- [getCapacityIncrement](kernel/oscollection/1808233-getcapacityincrement.md)
- [getCount](kernel/oscollection/1808238-getcount.md)
- [getNextObjectForIterator](kernel/oscollection/1808244-getnextobjectforiterator.md)
- [haveUpdated](kernel/oscollection/1808248-haveupdated.md)
- [init](kernel/oscollection/1808252-init.md)
- [initIterator](kernel/oscollection/1808258-inititerator.md)
- [iteratorSize](kernel/oscollection/1808262-iteratorsize.md)
- [setCapacityIncrement](kernel/oscollection/1808267-setcapacityincrement.md)

### DataTypes

- [_OSCollectionFlags](kernel/oscollection/oscollectionflags.md)

### Instance Methods

- [copyCollection](kernel/oscollection/1569367-copycollection.md)
- [ensureCapacity](driverkit/oscollection/ensurecapacity.md)
- [flushCollection](driverkit/oscollection/flushcollection.md)
- [getCapacity](driverkit/oscollection/getcapacity.md)
- [getCapacityIncrement](kernel/oscollection/1569369-getcapacityincrement.md)
- [getCount](driverkit/oscollection/getcount.md)
- [getMetaClass](kernel/oscollection/1569378-getmetaclass.md)
- [getNextObjectForIterator](kernel/oscollection/1569375-getnextobjectforiterator.md)
- [haveUpdated](kernel/oscollection/1569376-haveupdated.md)
- [init](kernel/oscollection/1569374-init.md)
- [initIterator](kernel/oscollection/1569368-inititerator.md)
- [iterateObjects](kernel/oscollection/2967351-iterateobjects.md)
- [iterateObjects](kernel/oscollection/3516833-iterateobjects.md)
- [iteratorSize](kernel/oscollection/1569370-iteratorsize.md)
- [setCapacityIncrement](kernel/oscollection/1569371-setcapacityincrement.md)
- [setOptions](kernel/oscollection/1569373-setoptions.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)
- [OSCollectionIterator](kernel/oscollectioniterator.md)
- [OSIterator](kernel/ositerator.md)
