<!--
{
  "availability" : [
    "iOS: -",
    "iPadOS: -",
    "macCatalyst: -",
    "macOS: -",
    "tvOS: -",
    "visionOS: -",
    "watchOS: -"
  ],
  "documentType" : "symbol",
  "framework" : "CoreFoundation",
  "identifier" : "/documentation/CoreFoundation/CFDictionaryCreate(_:_:_:_:_:_:)",
  "metadataVersion" : "0.1.0",
  "role" : "Function",
  "symbol" : {
    "kind" : "Function",
    "modules" : [
      "Core Foundation"
    ],
    "preciseIdentifier" : "c:@F@CFDictionaryCreate"
  },
  "title" : "CFDictionaryCreate(_:_:_:_:_:_:)"
}
-->

# CFDictionaryCreate(_:_:_:_:_:_:)

Creates an immutable dictionary containing the specified key-value pairs.

```
func CFDictionaryCreate(_ allocator: CFAllocator!, _ keys: UnsafeMutablePointer<UnsafeRawPointer?>!, _ values: UnsafeMutablePointer<UnsafeRawPointer?>!, _ numValues: CFIndex, _ keyCallBacks: UnsafePointer<CFDictionaryKeyCallBacks>!, _ valueCallBacks: UnsafePointer<CFDictionaryValueCallBacks>!) -> CFDictionary!
```

## Parameters

`allocator`

The allocator to use to allocate memory for the new dictionary. Pass `NULL` or [`kCFAllocatorDefault`](/documentation/CoreFoundation/kCFAllocatorDefault) to use the current default allocator.

`keys`

A C array of the pointer-sized keys to be in the new dictionary. This value may be `NULL` if the `numValues` parameter is `0`. This C array is not changed or freed by this function. The value must be a valid pointer to a C array of at least `numValues` pointers.

`values`

A C array of the pointer-sized values to be in the new dictionary. This value may be `NULL` if the `numValues` parameter is `0`. This C array is not changed or freed by this function. The value must be a valid pointer to a C array of at least `numValues` elements.

`numValues`

The number of key-value pairs to copy from the `keys` and `values` C arrays into the new dictionary. This number will be the count of the dictionary; it must be non-negative and less than or equal to the actual number of keys or values.

`keyCallBacks`

A pointer to a [`CFDictionaryKeyCallBacks`](/documentation/CoreFoundation/CFDictionaryKeyCallBacks) structure initialized with the callbacks to use to retain, release, describe, and compare keys in the dictionary. A copy of the contents of the callbacks structure is made, so that a pointer to a structure on the stack can be passed in or can be reused for multiple collection creations.

    This value may be     `NULL`    , which is treated as if a valid structure of version     `0`     with all fields     `NULL`     had been passed in. Otherwise, if any of the fields are not valid pointers to functions of the correct type, or this parameter is not a valid pointer to a [`CFDictionaryKeyCallBacks`](/documentation/CoreFoundation/CFDictionaryKeyCallBacks)     structure, the behavior is undefined. If any of the keys put into the collection is not one understood by one of the callback functions the behavior when that callback function is used is undefined.

    If the collection will contain CFType objects only, then pass a pointer to [`kCFTypeDictionaryKeyCallBacks`](/documentation/CoreFoundation/kCFTypeDictionaryKeyCallBacks)     as this parameter to use the default callback functions.

`valueCallBacks`

A pointer to a [`CFDictionaryValueCallBacks`](/documentation/CoreFoundation/CFDictionaryValueCallBacks) structure initialized with the callbacks to use to retain, release, describe, and compare values in the dictionary. A copy of the contents of the callbacks structure is made, so that a pointer to a structure on the stack can be passed in or can be reused for multiple collection creations.

    This value may be     `NULL`    , which is treated as if a valid structure of version     `0`     with all fields     `NULL`     had been passed in. Otherwise, if any of the fields are not valid pointers to functions of the correct type, or this parameter is not a valid pointer to a [`CFDictionaryValueCallBacks`](/documentation/CoreFoundation/CFDictionaryValueCallBacks)     structure, the behavior is undefined. If any value put into the collection is not one understood by one of the callback functions the behavior when that callback function is used is undefined.

    If the collection will contain CFType objects only, then pass a pointer to [`kCFTypeDictionaryValueCallBacks`](/documentation/CoreFoundation/kCFTypeDictionaryValueCallBacks)     as this parameter to use the default callback functions.

## Return Value

A new dictionary, or `NULL` if there was a problem creating the object. Ownership follows the [The Create Rule](https://developer.apple.com/library/archive/documentation/CoreFoundation/Conceptual/CFMemoryMgmt/Concepts/Ownership.html#//apple_ref/doc/uid/20001148-103029).

## Discussion

---

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)