<!--
{
  "availability" : [
    "iOS: -",
    "iPadOS: -",
    "macCatalyst: -",
    "macOS: -",
    "tvOS: -",
    "visionOS: -",
    "watchOS: -"
  ],
  "documentType" : "symbol",
  "framework" : "AVFoundation",
  "identifier" : "/documentation/AVFoundation/AVAsynchronousKeyValueLoading",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "AVFoundation"
    ],
    "preciseIdentifier" : "c:objc(pl)AVAsynchronousKeyValueLoading"
  },
  "title" : "AVAsynchronousKeyValueLoading"
}
-->

# AVAsynchronousKeyValueLoading

A protocol that defines the interface to load media data asynchronously.

```
protocol AVAsynchronousKeyValueLoading
```

## Overview

Loading media data takes an amount of time that depends on factors including the media’s size, location, device capabilities, network conditions, and so on. To optimize performance, [`AVAsset`](/documentation/AVFoundation/AVAsset) defers loading its media data until you query its properties or perform an operation that requires it. This means that performing these actions from a synchronous context would block the calling thread for an unknown amount of time, which would result in a poor user experience, and may even cause your app to crash. For this reason, you must load media data asynchronously.

Call the asynchronous [`load(_:isolation:)`](/documentation/AVFoundation/AVAsynchronousKeyValueLoading/load(_:isolation:)) method to retrieve the values of media properties, or determine the loaded status of a property by calling the [`status(of:)`](/documentation/AVFoundation/AVAsynchronousKeyValueLoading/status(of:)) method. See [Loading media data asynchronously](/documentation/AVFoundation/loading-media-data-asynchronously) for more information.

## Topics

### Loading property values

[`load(_:isolation:)`](/documentation/AVFoundation/AVAsynchronousKeyValueLoading/load(_:isolation:))

Loads a property asynchronously and returns the value.

[`load(_:_:_:isolation:)`](/documentation/AVFoundation/AVAsynchronousKeyValueLoading/load(_:_:_:isolation:))

Loads two or more properties asynchronously and returns the values.

### Determining the loaded status

[`status(of:)`](/documentation/AVFoundation/AVAsynchronousKeyValueLoading/status(of:))

Returns a value that indicates the loaded status of a property.

### Deprecated

[Deprecated symbols](/documentation/AVFoundation/avasynchronouskeyvalueloading-deprecated-symbols)

Review unsupported symbols and their replacements.

[`loadValuesAsynchronously(forKeys:completionHandler:)`](/documentation/AVFoundation/AVAsynchronousKeyValueLoading/loadValuesAsynchronously(forKeys:completionHandler:))

Tells the asset to load the values of all of the specified keys that aren’t already loaded.

[`statusOfValue(forKey:error:)`](/documentation/AVFoundation/AVAsynchronousKeyValueLoading/statusOfValue(forKey:error:))

Returns a status that indicates whether a property value is immediately available without blocking the calling thread.

[`AVKeyValueStatus`](/documentation/AVFoundation/AVKeyValueStatus)

Values that indicate the loaded status of a property.



---

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)