<!--
{
  "availability" : [
    "iOS: 9.0.0 -",
    "iPadOS: 9.0.0 -",
    "macCatalyst: 13.1.0 -",
    "macOS: 10.11.0 -",
    "tvOS: 9.0.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "AudioToolbox",
  "identifier" : "/documentation/AudioToolbox/AUAudioUnitBusArray",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "Audio Toolbox"
    ],
    "preciseIdentifier" : "c:objc(cs)AUAudioUnitBusArray"
  },
  "title" : "AUAudioUnitBusArray"
}
-->

# AUAudioUnitBusArray

A class that defines a container for an audio unit’s input or output busses.

```
class AUAudioUnitBusArray
```

## Overview

Hosts can observe a bus property across all busses by using KVO on a bus array object, without having to observe it on each individual bus. Some audio units (e.g. mixers) support variable numbers of busses, via subclassing. When the bus count changes, a KVO notification is sent on the audio unit’s [`inputBusses`](/documentation/AudioToolbox/AUAudioUnit/inputBusses) or [`outputBusses`](/documentation/AudioToolbox/AUAudioUnit/outputBusses) property, as appropriate.

This version 3 class is bridged to the version 2 `kAudioUnitProperty_ElementCount` API.

> Note:
> You could add listeners to individual busses, but that means you have to observe bus count changes and add or remove listeners in response. Furthermore, the <doc://com.apple.documentation/documentation/Foundation/NSArray/addObserver(_:toObjectsAt:forKeyPath:options:context:)> method is problematic; it does not let the individual objects override the observation request, and so a bus which is proxying a bus in an extension process does not get the message.

## Topics

### Initialization

[`-  initWithAudioUnit:busType:`](/documentation/AudioToolbox/AUAudioUnitBusArray/init(audioUnit:busType:))

Initializes an empty bus array.

[`-  initWithAudioUnit:busType:busses:`](/documentation/AudioToolbox/AUAudioUnitBusArray/init(audioUnit:busType:busses:))

Initializes a bus array by making a copy of the supplied busses.

### Bus Array Methods and Properties

[`count`](/documentation/AudioToolbox/AUAudioUnitBusArray/count)

The number of busses in the array.

[`countChangeable`](/documentation/AudioToolbox/AUAudioUnitBusArray/isCountChangeable)

Determines whether the array can have a variable number of busses.

[`ownerAudioUnit`](/documentation/AudioToolbox/AUAudioUnitBusArray/ownerAudioUnit)

The audio unit that owns the bus array.

[`busType`](/documentation/AudioToolbox/AUAudioUnitBusArray/busType)

Determines whether the bus array is for input or output.

[`-  objectAtIndexedSubscript:`](/documentation/AudioToolbox/AUAudioUnitBusArray/subscript(_:))

Returns the bus at the specified index.

[`-  setBusCount:error:`](/documentation/AudioToolbox/AUAudioUnitBusArray/setBusCount(_:))

Changes the number of busses in the array.

[`-  addObserverToAllBusses:forKeyPath:options:context:`](/documentation/AudioToolbox/AUAudioUnitBusArray/addObserver(toAllBusses:forKeyPath:options:context:))

Adds a KVO observer for a given property on all busses in the array.

[`-  removeObserverFromAllBusses:forKeyPath:context:`](/documentation/AudioToolbox/AUAudioUnitBusArray/removeObserver(fromAllBusses:forKeyPath:context:))

Removes a KVO observer for a given property on all busses in the array.

### Audio Unit Implementations

This method is only of interest to audio unit subclasses.

[`-  replaceBusses:`](/documentation/AudioToolbox/AUAudioUnitBusArray/replaceBusses(_:))

Replaces the current bus array with a copy of the supplied bus array.

## Relationships

### Inherits From

[`NSObject-swift.class`](/documentation/ObjectiveC/NSObject-swift.class)

### Conforms To

[`Equatable`](/documentation/Swift/Equatable)

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`NSFastEnumeration`](/documentation/Foundation/NSFastEnumeration)

[`CVarArg`](/documentation/Swift/CVarArg)

[`Hashable`](/documentation/Swift/Hashable)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)