CFNumber encapsulates C scalar (numeric) types. It provides functions for setting and accessing the value as any basic C type. It also provides a compare function to determine the ordering of two CFNumber objects. CFNumber objects are used to wrap numerical values for use in Core Foundation property lists and collections.

CFNumber objects are not intended as a replacement for C scalar values and should not be used in APIs or implementations where scalar values are more appropriate and efficient.

CFNumber is “toll-free bridged” with its Cocoa Foundation counterpart, NSNumber. This means that the Core Foundation type is interchangeable in function or method calls with the bridged Foundation object. Therefore, in a method where you see an NSNumber * parameter, you can pass in a CFNumberRef, and in a function where you see a CFNumberRef parameter, you can pass in an NSNumber instance. This fact also applies to concrete subclasses of NSNumber. See Toll-Free Bridged Types for more information on toll-free bridging.


Creating a Number


Creates a CFNumber object using a specified value.

Getting Information About Numbers


Returns the number of bytes used by a CFNumber object to store its value.


Returns the type used by a CFNumber object to store its value.


Obtains the value of a CFNumber object cast to a specified type.


Determines whether a CFNumber object contains a value stored as one of the defined floating point types.

Comparing Numbers


Compares two CFNumber objects and returns a comparison result.

Getting the CFNumber Type ID


Returns the type identifier for the CFNumber opaque type.

Data Types


A reference to a CFNumber object.



Flags used by CFNumber to indicate the data type of a value.

Predefined Values

CFNumber provides some predefined number values.

See Also

Opaque Types


The CFFileDescriptor provides an opaque type to monitor file descriptors for read and write activity via CFRunLoop.


CFStringTokenizer allows you to tokenize strings into words, sentences or paragraphs in a language-neutral way. It supports languages such as Japanese and Chinese that do not delimit words by spaces, as well as de-compounding German compounds. You can obtain Latin transcription for tokens. It also provides language identification API.