---
title: OSArray
framework: kernel
role: symbol
role_heading: Class
path: kernel/osarray
---

# OSArray

OSArray provides an indexed store of objects.

## Declaration

```occ
class OSArray : OSCollection
```

## Overview

Overview OSArray is a container for Libkern C++ objects (those derived from OSMetaClassBase, in particular OSObject). Storage and access are by array index. You must generally cast retrieved objects from OSObject to the desired class using OSDynamicCast. This macro returns the object cast to the desired class, or NULL if the object isn't derived from that class. As with all Libkern collection classes, OSArray retains objects added to it, and releases objects removed from it (or replaced). An OSArray also grows as necessary to accommodate new objects, unlike Core Foundation collections (it does not, however, shrink). 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. OSArray 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/osarray/1808122-copycollection.md)
- [ensureCapacity](kernel/osarray/1808132-ensurecapacity.md)
- [flushCollection](kernel/osarray/1808145-flushcollection.md)
- [free](kernel/osarray/1808156-free.md)
- [getCapacity](kernel/osarray/1808168-getcapacity.md)
- [getCapacityIncrement](kernel/osarray/1808174-getcapacityincrement.md)
- [getCount](kernel/osarray/1808184-getcount.md)
- [getLastObject](kernel/osarray/1808193-getlastobject.md)
- [getNextIndexOfObject](kernel/osarray/1808202-getnextindexofobject.md)
- [getObject](kernel/osarray/1808210-getobject.md)
- [initWithArray](kernel/osarray/1808216-initwitharray.md)
- [initWithCapacity](kernel/osarray/1808222-initwithcapacity.md)
- [initWithObjects](kernel/osarray/1808226-initwithobjects.md)
- [isEqualTo(const OSArray *)](kernel/osarray/1808231-isequalto.md)
- [isEqualTo(const OSMetaClassBase *)](kernel/osarray/1808236-isequalto.md)
- [merge](kernel/osarray/1808242-merge.md)
- [removeObject](kernel/osarray/1808246-removeobject.md)
- [replaceObject](kernel/osarray/1808249-replaceobject.md)
- [serialize](kernel/osarray/1808255-serialize.md)
- [setCapacityIncrement](kernel/osarray/1808259-setcapacityincrement.md)
- [setObject(const OSMetaClassBase *)](kernel/osarray/1808261-setobject.md)
- [setObject(unsigned int, const OSMetaClassBase *)](kernel/osarray/1808266-setobject.md)
- [withArray](kernel/osarray/1808272-witharray.md)
- [withCapacity](kernel/osarray/1808279-withcapacity.md)
- [withObjects](kernel/osarray/1808285-withobjects.md)

### Instance Methods

- [copyCollection](kernel/osarray/1448234-copycollection.md)
- [ensureCapacity](driverkit/osarray/ensurecapacity.md)
- [flushCollection](driverkit/osarray/flushcollection.md)
- [free](driverkit/osarray/free.md)
- [getCapacity](driverkit/osarray/getcapacity.md)
- [getCapacityIncrement](kernel/osarray/1448240-getcapacityincrement.md)
- [getCount](driverkit/osarray/getcount.md)
- [getLastObject](driverkit/osarray/getlastobject.md)
- [getMetaClass](kernel/osarray/1448214-getmetaclass.md)
- [getNextIndexOfObject](driverkit/osarray/getnextindexofobject.md)
- [getNextObjectForIterator](kernel/osarray/1448224-getnextobjectforiterator.md)
- [getObject](driverkit/osarray/getobject.md)
- [initIterator](kernel/osarray/1448201-inititerator.md)
- [initWithArray](kernel/osarray/1448198-initwitharray.md)
- [initWithCapacity](kernel/osarray/1448218-initwithcapacity.md)
- [initWithObjects](kernel/osarray/1448254-initwithobjects.md)
- [isEqualTo](driverkit/osarray/isequalto-5w7om.md)
- [isEqualTo](driverkit/osarray/isequalto-93qxy.md)
- [iteratorSize](kernel/osarray/1448229-iteratorsize.md)
- [merge](driverkit/osarray/merge.md)
- [removeObject](driverkit/osarray/removeobject.md)
- [replaceObject](driverkit/osarray/replaceobject.md)
- [replaceObject](kernel/osarray/3567165-replaceobject.md)
- [serialize](kernel/osarray/1448205-serialize.md)
- [setCapacityIncrement](kernel/osarray/1448250-setcapacityincrement.md)
- [setObject](driverkit/osarray/setobject-3bore.md)
- [setObject](driverkit/osarray/setobject-4ys3x.md)
- [setObject](kernel/osarray/3567166-setobject.md)
- [setObject](kernel/osarray/3567167-setobject.md)
- [setOptions](kernel/osarray/1448245-setoptions.md)

### Type Methods

- [withArray](driverkit/osarray/witharray.md)
- [withCapacity](driverkit/osarray/withcapacity.md)
- [withObjects](driverkit/osarray/withobjects.md)

## Relationships

### Inherits From

- [OSCollection](kernel/oscollection.md)

## See Also

### Collections

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